Django基础

创建第一个项目

1
django-admin startprojct HelloWorld

创建一个Django项目名为HelloWorld,目录结构如下

1
2
3
4
5
6
7
8
9
10
$ cd HelloWorld/
$ tree
.
|-- HelloWorld
| |-- __init__.py
| |-- asgi.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py

目录说明:

  • HelloWorld: 项目的容器。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  • HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • HelloWorld/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。
  • HelloWorld/settings.py: 该 Django 项目的设置/配置。
  • HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
  • HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

启动服务器

1
python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000

第一次打开网页出现报错:DisallowedHost at Invaild HTTP_HOST header: ‘0.0.0.0:8000’. You may need to add ‘0.0.0.0’ to ALLOWED_HOSTS.
解决:在配置文件settings.py中找到ALLOWED_HOSTS,将‘0.0.0.0’添加到其中

视图和URL配置

HelloWorld/HelloWorld/目录下新建一个views.py文件,输入

1
2
3
4
from django.http import HttpResponse

def hello(request):
return HttpResponse("Hello world ! ")

在urls.py文件中写入

1
2
3
4
5
6
7
from django.urls import re_path as url  
# from django.conf.urls import url 这段代码已经过时,上面的re_path取代了之前版本的url
from . import views

urlpatterns = [
url(r'^$', views.hello),
]

可在网页中看到“Hello world!”的输出

path()函数:

1
path(route, view, kwargs=None, name=None)

创建app

1
python3 manage.py startapp app1  # 创建app1

目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.
├── HelloWorld
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-38.pyc
│   │   ├── settings.cpython-38.pyc
│   │   ├── urls.cpython-38.pyc
│   │   ├── views.cpython-38.pyc
│   │   └── wsgi.cpython-38.pyc
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py # 配置app用的url
│   ├── views.py
│   └── wsgi.py
├── app1
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py # 对数据库进行操作
│   ├── tests.py
│   └── views.py # 视图函数
├── db.sqlite3
└── manage.py

编写URL和视图函数的对应关系

1
2
3
urlpatterns = [  
path('something/', views.something)
]

编写视图函数

1
2
def something(request)
return HttpResponse("xxxxx")

启动django项目

  • 命令行启动
    1
    python manage.py runserver

在app1下新建一个templates目录,写入HTML模板,可以在views中用render函数直接获取

1
return render(request, 'something.html')

Django基础
http://example.com/2024/11/27/Notes/编程/Django/Django基础/
许可协议