本文我们将完成一个首页。
当一个Django项目足够庞大时,我们可以把项目分为几个APP单独开发。 如果项目是XX大学的话,那么APP就是XX学院。
——Python学习网
打开CMD,创建一个文章管理APP:
PYTHON manage.py startapp article
打开HZHBBS\settings.py
,注册APP:
... INSTALLED_APPS = [ ... 'article', # 新增代码,用于注册article ] ...
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')), ]
新建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 %}
是时候该运行项目了!先配置一下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/
(倒数第二行的网址)。
为什么页面是空白的?我们还没有写过文章呢!
打开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