Django框架介绍与安装(2)

第一部分:创建与使用

(1). 创建项目

如果这是你第一次使用Django,那么你必须要照顾一些初始设置。也就是说,您需要自动生成一些建立Django 项目的代码

从命令行cd到您要存储代码的目录,然后运行以下命令:

$ django-admin startproject mysite

我们来看看startproject创建的内容:

[root@localhost mysite]# tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

关于上面自动生成的目录与文件解释如下:

  • 外部mysite/根目录只是一个项目的容器。它的名字与Django无关; 您可以将其重命名为您喜欢的任何内容。

  • manage.py:一个命令行实用程序,可以让您以各种方式与此Django项目进行交互。你可以阅读所有的细节 manage.py在Django的管理和manage.py。

  • 内部mysite/目录是您的项目的实际Python包。它的名字是您需要用来导入其中的任何内容的Python包名称(例如mysite.urls)。

  • mysite/init.py:一个空的文件,告诉Python这个目录应该被认为是一个Python包。

  • mysite/settings.py:此Django项目的设置/配置。 Django设置会告诉你所有关于设置的工作原理。

  • mysite/urls.py:该Django项目的URL声明; 您的Django动力网站的“目录”。

  • mysite/wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点。

(2). 运行开发服务器

我们来验证您的Django项目的作品。更改为外部mysite目录,如果您还没有,并运行以下命令:

$ python manage.py runserver

注:若当前环境中有两个python环境,可使用python3或python3.8命令来调用3.8的环境,如:
$ python3 manage.py runserver

您将在命令行中看到以下输出:

Performing system checks...

System check identified no issues (0 silenced).

You have 17 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.
June 23, 2020 - 09:22:35
Django version 2.2.13, using settings 'demo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

以上说明已经开始使用Django的开发服务器,这是一个纯粹以Python编写的轻量级Web服务器。 我们将其与Django结合在一起,因此您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好生产。

默认情况下,该runserver命令在端口8000的内部IP上启动开发服务器。当然也可以指定端口开启服务,如8080端口:

$ python manage.py runserver 8080

如果要更改服务器的IP,请将其与端口一起传递。例如:

$ python manage.py runserver 0.0.0.0:8000

注意:通过IP访问后报如下错误:

    DisallowedHost at /polls
    Invalid HTTP_HOST header: '192.168.*.*:8000'. You may need to add '192.168.*.*' to ALLOWED_HOSTS.
HTTP_HOST标头无效:'192.168.*.*:8000'。您可能需要将“192.168.*.*”添加到ALLOWED_HOSTS
如:ALLOWED_HOSTS = ['192.168.104.240']
或:ALLOWED_HOSTS = ['*']

(3). 创建一个应用程序

Django自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

要创建您的应用程序,请确保您与目录位于同一目录,manage.py 并键入以下命令:

$ python manage.py startapp polls

注:若当前环境中有两个python环境,可使用python3或python3.6命令来调用3.6的环境,如:
$ python3 manage.py startapp polls

这将创建一个目录polls,其目录如下:此目录结构将容纳轮询应用程序。

[root@localhost demo]# tree mysite/
mysite/
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── polls
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

(4). 定义我们的第一个视图

我们来写第一个视图。打开文件polls/views.py 并放入以下Python代码:

from django.http import HttpResponse

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

这是Django中最简单的视图。要调用视图,我们需要将其映射到一个URL - 为此,我们需要一个URLconf。

要在polls目录中创建一个URLconf,创建一个名为urls.py。您的应用目录应该如下所示:

└── polls
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    ├── urls.py
    └── views.py

在polls/urls.py文件中包含以下代码:

from django.urls import path

from . import views

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

下一步是将根URLconf指向polls.urls模块。 在 mysite/urls.py添加一条import用于django.urls.include和插入include()的urlpatterns列表,所以你必须:

from django.contrib import admin
from django.urls import include,path

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

其中include()函数允许引用其他URLconfs。请注意,该include()函数的正则表达式 没有$(字符串匹配字符),而是尾部的斜杠。 每当Django遇到时 include(),它会排除与该点匹配的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。

背后的想法include()是使即插即用的URL变得容易。由于民意调查是在自己的URLconf(polls/urls.py)中,它们可以被放置在“/ polls /”下面,或者在“/ fun_polls /”下面,或者在“/ content / polls /”或其他路径根目录下,工作。

注:include()当您包含其他网址格式时,您应始终使用。 admin.site.urls是唯一的例外。

您现在已将index视图连接到URLconf中。让它验证它的工作,运行以下命令:

$ python manage.py runserver 0:8000

在浏览器中转到http:// localhost:8000 / polls /,您应该看到文本"Hello, world. You're at the polls index."

附录:path() 函数介绍

Django path() 可以接收四个参数,分别是两个必选参数:routeview 和两个可选参数:kwargsname,接下来详细介绍这四个参数。

  • route: 是包含URL模式的字符串。在处理请求时,Django从第一个模式开始,
          urlpatterns然后沿列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的URL。
    
  • view: 用于执行与正则表达式匹配的 URL 请求。
  • kwargs: 视图使用的字典类型的参数。
  • name: 用来反向获取 URL。
上一篇:django官方教程 编写你的第一个Django应用 01


下一篇:Django的quickstart