本文我们将完成一个首页。
文章目录
注册APP
当一个Django项目足够庞大时,我们可以把项目分为几个APP单独开发。 如果项目是XX大学的话,那么APP就是XX学院。
——Python学习网
打开CMD,创建一个文章管理APP:
PYTHON manage.py startapp article
打开HZHBBS\settings.py
,注册APP:
...
INSTALLED_APPS = [
...
'article', # 新增代码,用于注册article
]
...
url配置
HZHBBS目录配置
article已经创建完毕了,接下来到了url配置。
清空HZHBBS\urls.py
中的所有代码,用以下代码覆盖:
HZHBBS\urls.py
from django.urls import path, include
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('article.urls', namespace='article')),
]
- urlpatterns - 存储url的列表。
- include(‘article.urls’, namespace=‘article’) - 包含了article的url,并将命名空间设为article。
article目录配置
新建article/urls.py
,输入:
article/urls.py
from django.urls import path
app_name = 'article' # 必须写,为app的名称
urlpatterns = [
]
模板目录配置
用户发送请求的时候,视图会返回一个响应,响应可以是一个重定向,一个404错误,一个XML文档,一张图片或者是一个HTML内容的网页。前面几个返回的信息比较有限,我们重点更多是放在HTML内容的网页。我们把这样的页面按规范写好,然后都放在项目根目录下的templates文件夹里,这样的页面,我们称之为"模板"页面。
——Django中文网
修改HZHBBS\settings.py
:
HZHBBS\settings.py
...
from pathlib import Path
import os
...
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 修改这行
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
],
},
},
]
...
模型
- 通常情况,一个模型对应数据库的一张表。
- Django中,模型以类(Class)的形式出现。
- 模型包含了一些字段以及数据的一些行为。
- 只需要在类里面进行操作,就可以操作数据库,表,不需要直接使用数据库语句。
- 我们通过创建类来创建数据表,所以对数据库的操作,都是对类与对类的对象进行操作,而不使用数据库语句。
——CSDN
打开article/models.py
,创建一个Article模型:
article/models.py
from django.contrib.auth.models import User
from django.utils import timezone
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=80) # 文章标题,最大字数为80
description = models.CharField(max_length=150) # 文章简介
content = models.TextField() # 文章正文
author = models.ForeignKey(User, on_delete=models.CASACDE) # 文章作者,一个用户对应多篇文章,用户删除则文章删除
looks = models.PositiveIntegerField(default=0) # 观看量,默认为0
created = models.DateTimeField(default=timezone.now) # 创作时间
updated = models.DateTimeField(auto_now=True) # 更新时间
def __str__(self):
return self.title # 将显示信息设为文章标题
更新数据库
每次更新完models.py,都要更新数据库,Django会检测你对模型的更改。
打开CMD,输入以下两条指令:
PYTHON manage.py makemigrations
PYTHON manage.py migrate
视图
一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。
响应可以是一个 HTML 页面、一个 404 错误页面、重定向页面、XML 文档、或者一张图片…
无论视图本身包含什么逻辑,都要返回响应。代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中。
——Runoob
打开article/views.py
,输入以下代码:
article/views.py
from django.shortcuts import render
from .models import Article
def index(request):
articles = Article.objects.all().order_by('-created') # 获取所有文章并以创作时间倒着排序
context = {'articles': articles}
return render(request, 'article/index.html', context) # 使用article/index.html模板并将articles传入模板
模板
根据以下的目录新建文件/文件夹:
.
│ manage.py
│
│ ...
│
└─templates
└─article
index.html
编辑templates/article/index.html
:
templates/article/index.html
{% for article in articles %}
<h3>{{ article.title }}</h3>
{% endfor %}
- {% for … %} - Django模板的for循环语法。
- {{ article.title }} - 获取文章标题。
- {% endfor %} - 用于标记结束for循环。
激动人心的时刻
是时候该运行项目了!先配置一下url:
article\urls.py
...
from . import views
...
urlpatterns = [
path('', views.index, name='index'),
]
运行项目!
打开CMD,输入运行项目的代码:
PYTHON manage.py runserver
如果出现以下字样就算成功了:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 11, 2021 - 20:38:48
Django version 4.0, using settings 'HZHBBS.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
打开浏览器,在地址栏里输入http://127.0.0.1:8000/
(倒数第二行的网址)。
为什么页面是空白的?我们还没有写过文章呢!
admin后台配置
打开article\admin.py
,输入:
article\admin.py
from django.contrib import admin
from . import models
admin.site.register(models.Article) # 将文章模型注册到admin
打开CMD,创建一个超级用户:
PYTHON manage.py createsuperuser
按照提示做下去,用户就创建成功了!
继续运行项目,访问http://127.0.0.1:8000/admin/
,登录,选择Articles
,点右上角的增加 ARTICLE
,填写表单。
多填写几条数据,用于测试。
George写分别是TEST #1
,TEST #2
,TEST #3
。
再次运行
运行后,浏览器上应该是刚才文章的标题。
成功了!但是界面太难看了,下一篇文章将美化页面。
总结
本文我们制作了首页。
有疑问请私信我Email:h18989847468@163.com