创建第一个项目 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 . 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
目录结构如下:
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' )