云昴(Mao Yun)

【Django系列】开始你的第一个应用

| 【专业·学习】Django

本文来自于官方文档

Django系列将持续更新,并将用自己的实际项目系统来作为例子。Django版本:3.0。

创建一个项目

django-admin startproject mysite

这将会创建一个名为mysite的项目。

它的目录结构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

其中manage.py是一个和Django项目进行命令行交互的文件,在里面的mysite文件夹是Python包,settings.py用来配置Django程序,urls.py是Django项目的URL声明,asgi.py是asgi服务器入口,wsgi.py是WSGI服务器入口。

开发环境下的服务器

python manage.py runserver

你可以使用python manage.py runserver 8080来指定端口。请注意千万不要将它用于生产环境中。

开发模式下会自动加载你的更改,你不需要重启服务器。

创建应用程序

项目和应用之间有什么区别?应用程序是执行某项操作的Web应用程序,例如Weblog系统,公共记录数据库或小型民意调查应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。

python manage.py startapp polls创建名为polls的应用程序。

它的目录结构如下:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

编写第一个视图

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

这是Django中最简单的视图。要调用该视图,我们需要将其映射到URL-为此,我们需要一个URLconf。

要在民意调查目录中创建URLconf,请创建一个名为urls.py的文件。

polls/urls.py创建URL配置。

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

下一步是将根URLconf指向polls.urls模块。在mysite/urls.py中,为django.urls.include添加一个import,并在urlpatterns列表中插入一个include().

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

include()函数允许引用其他URLconf。每当Django遇到include()时,它都会砍掉匹配到该点的URL的任何部分,并将剩余的字符串发送到包含的URLconf中以进行进一步处理。

Go to http://localhost:8000/polls/ in your browser, and you should see the text “Hello, world. You’re at the polls index.”, which you defined in the index view.

path()的四个参数

two required: route and view, and two optional: kwargs, and name.

route

route是包含URL模式的字符串。在处理请求时,Django从urlpatterns中的第一个模式开始,然后沿着列表的方式前进,将请求的URL与每个模式进行比较,直到找到匹配的URL。

view

当Django找到匹配的模式时,它将使用HttpRequest对象作为第一个参数,并从路由中获取的所有“captured”值作为关键字参数来调用指定的视图函数。

kwargs

可以在字典中将任意关键字参数传递给目标视图。在本教程中,我们不会使用Django的此功能。

name

命名URL可以使您在Django中的其他地方(尤其是在模板内部)明确地引用它。

云昴(Mao Yun)