Django安装
pip安装django
pip install django
查看django版本
python -m django --version
Django创建项目
如果你想使用Django的话,你需要一些初始化的配置。也就是说,你需要用一些自动生成的代码配置一个Django project。
django-admin startproject mysite
这行命令会帮助我们在当前目录下创建一个 mysite 目录。
项目名命时要注意,避免使用Python和Django的内部保留关键字来作为项目名称。
项目目录构成
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
他们的作用是:
-
最外层的
mysite/
根目录只是你项目的容器,根目录名称对Django没有影响,可以将他重命名成任何你喜欢的名称。-
manage.py 一个让你用各种方式管理
Django
项目的命令行工具。 -
里面一层的
mysite/
目录包含你的项目,它是一个纯Python包。它的名字就是当你引用它内部任何东西时需要用到的Python包名。- __ init __ .py 一个空文件,告诉Python这个号目录应该被认为是一个Python包。
- setting.py Django项目的配置文件。
- urls.py Django项目的URL声明,就像你网站的目录。
- asgi.py 作为你项目的允许在 ASGI 兼容的 WEB 服务器上的入口。
- wsgi.py 作为你项目的允许在 WSGI 兼容的 WEB 服务器上的入口。
-
manage.py 一个让你用各种方式管理
运行Django
让我们确认一下Django是否真的创建成功了。如果你当前目录不是外层mysite目录的话,请切换到此目录(和manage.py同级)
python manage.py runserver
或
py manage.py runserver
你应该会看到如下输出
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
April 01, 2023 - 21:00:42
Django version 4.1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
更换运行端口
默认情况下,runserver 命令会将服务器设置为监听本机内部 ip 的8000端口。
如果你想更换服务监听的端口,请使用命令行参数,如下命令会监听8080端口
py manage.py runserver 8080
如果你i选哪个要修改服务器监听的ip,在端口就之前输入新的。比如,为了监听所有服务器的公开ip(
这行命令,会像网络上所有电脑展示你的成果)
py manage.py runserver 0.0.0.0:8000
创建一个投票应用
在Django中,每一个
应用
都是一个Python包,并且遵循着相同的约定。Django自带一个工具,可以帮你生成
应用的基本目录结构。
项目和应用
项目和应用有什么区别?应用是一个专门做某件事的网络应用程序例如:博客、公共记录的数据库、投票程序。
而项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用,应用可以被很多个项目使用。
我们的应用可以存放在任何Python路径中定义的路径。我们会在 manage.py同级别目录下创建投票应用。这样他就可以作为顶级模块导入,而不是mysite的子模块
python manage.py startapp polls
这将会创建一个polls目录,他的目录结构大致如下:
polls/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
编写第一个视图
打开 polls/views.py,把以下代码输入
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello,World.")
这是Django中最简单的视图。如果想看到效果,我们需要将一个URL映射到它。
在polls目录中创建一个 urls.py 文件
在polls/urls.py文件中输入如下代码
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name="index")
]
下一步是要在项目级的urls中也就是mysite/urls.py写入以下代码
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include("polls.urls"))
]
函数include()允许应用其他URL confs。每当Django遇到include()时,他会截断与此项匹配的URL的部分,
将剩余的字符串发送到对应的URL confs 中进行处理。
我们设计include()的理念是使其可以即插即用。应为投票应用有他自己的URLconf(polls/urls.py)
,当我们不想使用的时候,在系统级URLconf中(mysite/urls.py)直接注释掉 polls/配置即可
Path()函数
函数 path()具有四个参数,两个必须参数: route 和 view,
还有两个可选参数 kwargs 和 namme。
route
route 是一个匹配 url 的准则 (类似正则表达式)。当 Django相应一个请求时,他会从urlpatterns的第一项开始
按照顺序依次匹配列表中的项,直到找到匹配的项。
-
https://www.example.com/myapp/
- 匹配 myapp/处理请求
-
https://www.example.com/myapp/?page=3
- 匹配 myapp/
view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个HttpRequest对象作为第一个参数,
被 捕获的参数以关键字参数的形式传入
kwargs
任意个关键字参数可以作为一个字典传给目标视图函数。
name
为你的url取名能使你在Django的任意地方唯一的应用它,尤其是在模板中。