1. 创建第一个项目
使用 django-admin 来创建 HelloWorld 项目:
django-admin startproject HelloWorld
django-admin startproject HelloWorld
创建完成后我们可以查看下项目的目录结构:
$ cd HelloWorld/ $ tree/f
C:.
│ manage.py
│
└─HelloWorld
asgi.py
settings.py
urls.py
wsgi.py
__init__.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 服务器的入口,以便运行你的项目。
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
python manage.py runserver
出现一堆字,其中有一串:Starting development server at http://127.0.0.1:8000/,在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,输出结果如下:
django默认工作在调式Debug模式下,如果增加、修改、删除文件,服务器会自动重启
按ctrl+c停止服务器
2. 视图和 URL 配置
用pycharm打开创建的HelloWorld项目
(1) 定义视图
-
视图就是一个
Python
函数,被定义在应用
的views.py
中. -
视图的第一个参数是
HttpRequest
类型的对象reqeust
,包含了所有请求信息
. -
视图必须返回
HttpResponse对象
,包含返回给请求者的响应信息
. -
需要导入
HttpResponse
模块 :from django.http import HttpResponse
-
定义视图函数 : 响应字符串index页面给客户端
在 HelloWorld 目录下的 HelloWorld 目录新建一个 views.py 文件,并输入代码:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ! ")
(2)配置URLconf
-
查找视图的过程 :
-
1.请求者在浏览器地址栏中输入URL, 请求到网站.
-
2.网站获取URL信息.
-
3.然后与编写好的URLconf逐条匹配.
-
4.如果匹配成功则调用对应的视图.
-
5.如果所有的URLconf都没有匹配成功.则返回404错误.
-
接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
#from django.conf.urls import url Django 3.0以下用这一句
from django.urls import re_path as url #django 4.0+用这一句
from . import views
urlpatterns = [
url(r'^$', views.hello),
]
我们也可以修改以下规则:
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello),
]
注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。
path() 函数
Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
语法格式:
path(route, view, kwargs=None, name=None)
-
route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
-
view: 用于执行与正则表达式匹配的 URL 请求。
-
kwargs: 视图使用的字典类型的参数。
-
name: 用来反向获取 URL。
最终看到如下画面,说明创建成功: