请求和响应

2023-01-07 更新

1 创建项目

没有用过现代框架的 PHP 程序员,可能习惯把代码放在 Web 服务器根目录 /var/www ,显然这不安全,代码应该放在 /home/username/ ,即 ~ 目录 。命令 startproject 会帮你搭好的框架。避免使用像 django (与 django 冲突)或 test (与 python 冲突)这样的项目名称。

cd ~
django-admin startproject mysite

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

2 用于开发的简易服务器

难以置信,此时它已经是一个完整的可以运行的服务器了!

python manage.py runserver 8000

......
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

默认端口 8000 可以省略不写。

3 创建投票应用

项目是一个网站使用的配置和应用的集合。

注意:创建项目 startproject 是命令 django-admin 的参数;创建应用 startapp 是命令 python manage.py 的参数。

cd ~/mysite
python manage.py startapp polls

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py

Django 应用是“可插拔”的,你可以在多个项目中使用同一个应用。

4 编写第一个视图

startapp 遗漏了一个重要文件 polls/urls.py ,手动补上并加入 mysite/urls.py

# mysite/urls.py
from django.contrib import admin
from django.urls import include, path

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


# polls/urls.py
from django.urls import path
from . import views

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


# polls/views.py
from django.http import HttpResponse

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

运行服务器并用浏览器访问 http://localhost:8000/polls/

页面错误?注意是 http://localhost:8000/polls/ 而不是 http://localhost:8000/