欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

《TangoWithDjango2》Chapter3笔记-

时间:2023-06-01

(项目运行虚拟环境:python 3.7.5 & Django 2.1.5)

1、创建Django Project

激活虚拟环境后,运行命令来创建新的Django Project
(项目名称为 tango_with_django_project)

#新建项目$ django-admin.py startproject tango_with_django_project# 或者# django-admin startproject #进入项目目录$ cd tango_with_django_project#运行app$ python manage.py runserver

这时打开网页浏览器并访问链接http://127.0.0.1:8000/ 你应该看到下图信息:

初始的项目目录应该如下图所示:

Worksapce/tango_with_django_project/tango_with_django_project中的脚本:
init.py: 一个空白的Python脚本,向Python解释器表明该目录是一个Python包;
settings.py: 存放所有Django项目设置的地方;
urls.py: 为你的项目存储URL模式的Python脚本;
wsgi.py: 用于运行开发服务器和将项目部署到生产环境的Python脚本。

如果你希望在不同的端口上运行开发服务器,或者允许来自其他机器的用户访问它,您可以通过提供可选参数来实现。考虑下面的命令:

$ python manage.py runserver :5555

执行此命令将迫使开发服务器响应TCP端口5555上的传入请求
需要将替换为您计算机的IP地址或127.0.0.1
如果不知道自己的IP地址,可以用0.0.0.0,Django会找出你的IP地址

$ python manage.py runserver 0.0.0.0:5555

其他人访问 http://:/ 就可以访问你的web应用
(注:设置端口时,不太可能使用TCP端口80或8080,因为这些端口通常是为HTTP通信保留的。而且,任何低于1024的端口都被您的操作系统认为是具有特权的)

2.创建Django App

在 Workspace/tango_with_django_project 目录下运行命令来创建一个名为rango的目录

$ python manage.py startapp rango

Workspace/tango_with_django_project/rango目录应如下图所示:

Workspace/tango_with_django_project/rango 中的脚本:
init.py:一个空白的Python脚本,向Python解释器表明该目录是一个Python包;
admin.py:你可以注册你的模型,这样你就可以从Django机制中受益它会为你创建一个管理界面;
apps.py:这为任何特定于应用程序的配置提供了一个位置;
models.py:一个存储应用程序数据模型的地方,在这里指定实体和数据之间的关系;
tests.py: 你可以存储一系列函数来测试你的实现;
views.py:你可以存储一系列处理请求和返回响应的函数;
migrantions文件夹:存储与您的模型相关的数据库特定信息。

在你开始创建你的模型和视图之前,你必须首先告诉你的Django项目你的新应用的存在
=> 修改Workspace/tango_with_django_project//tango_with_django_project/setting.py
在INSTALLED_APPS template中添加rango

再次run server,验证Django是否接受了你的新应用。如果可以正常启动服务器说明应用程序就被选中了。

3、创建View

view处理来自客户机的请求,执行一些代码,并向客户机提供响应。
为了满足请求,它可以联系其他服务或查询来自其他来源的数据。视图的工作是整理和打包处理请求所需的数据,
(1)创建一个view,在rango/views.py添加下面代码行:

from django.http import HttpResponse # 创建名为index的view# 每个view至少会用到一个参数——一个HttpRequest对象,它存在于django.http模块# 约定将其命名为request,但如果愿意,可以将其重命名为任何名称def index(request):return HttpResponse("Rango says hey there partner!")# 每个view必须返回一个HttpResponse对象。一个简单的HttpResponse对象接受一个字符串参数,该参数表示我们希望发送给请求视图的客户端的页面内容

创建了view后,只是允许用户访问它的一部分方法。要让用户看到view,必须将URL (Uniform Resource Locator)映射到该view。

(2)创建初始映射
打开Workspace/tango_with_django_project/tango_with_django_project/urls.py
在from django.urls import path代码行下面添加:

from rango import views

然后更改urlpatterns列表为:

urlpatterns = [ path('', views.index, name='index'), path('admin/', admin.site.urls), ]

这将基本URL映射到rango应用程序中的index view
runserver后访问http://127.0.0.1:8000,将看到index view的呈现输出

3、映射URLs

我们可以通过改变将传入的URL路由到view的方式,而不是直接将URL从project映射到app,从而使应用程序更模块化(从而可重用)。
为此,我们首先需要修改project的urls.py,并让它指向app,以处理任何特定的Rango应用程序请求。然后,我们需要指定Rango如何处理此类请求。
(1)让urls指向app
更改Workspace/tango_with_django_project/tango_with_django_project/urls.py:

from django.contrib import admin from django.urls import path from django.urls import include from rango import viewsurlpatterns = [ path('', views.index, name='index'),path('rango/', include('rango.urls')),# 上面代码映射了任何以rango/开头的url,由rango处理path('admin/', admin.site.urls),]

urlpatterns是一个Python列表
添加的mapping查找匹配rango/的URL字符串。当匹配完成后,URL字符串的其余部分将被传递给rango.url并由其使用django.url包中的include()函数处理。
可以将其视为处理URL字符串的链—如URL链图所示。在这个链中,域名被剥离,剩下的URL字符串(rango/)被传递给tango_with_django项目,在那里它找到一个匹配,剥离rango/,留下一个空字符串传递给应用程序rango来处理

(2)我们需要在rango目录下创建一个名为urls.py的新文件,来处理剩余的URL字符串(并将空字符串映射到index view):

from django.urls import path from rango import views #允许我们调用函数url并指向urlpatterns中映射的index viewapp_name = 'rango'urlpatterns = [ path('', views.index, name='index'), ]

path() 函数:
• 参数1:要匹配的字符串。""空字符串情况,Django只会在http://127.0.0.1:8000/后面什么都没有的情况下找到一个匹配的字符串
• 参数2:告诉Django如果模式匹配,调用哪个视图。本例中调用的是view.index()
• 参数3:可选参数name。它提供了一种方便的方式来引用视图,通过命名URL映射,我们可以使用反向URL匹配。也就是说,我们可以通过名称而不是URL来引用URL映射

4、总结 – 基本workflow

创建一个新的 Django Project

$ django-admin.py startproject # 或者$ django-admin startproject

创建一个新的 Django App
(1)创建一个新的APP

$ python manage.py startapp rango

(2) 将新的App的appname添加到projectName/settings.py文件中的INSTALLED_APPS元组中 => 告诉你的Django项目关于这个新应用的信息
(3)projectName/urls.py中,添加到app的mapping
(4)appname/新建urls.py => 直接输入URL字符串到views
(5)appname/view.py中,创建所需的view,确保它们返回一个HttpResponse对象

5.练习

(1)创建一个新的view方法about,它返回以下HttpResponse: ‘Rango says here is the about page.’
(2)将这个视图映射到/rango/about/。在这一步中,你只需要编辑Rango应用程序的urls.py(记住/ Rango /部分是由项目的urls.py处理的。这个新映射的名称将是about)
(3)在index()视图中修改HttpResponse,加入一个关于页面的超链接。这是响应的一部分,这意味着链接在同一个字符串中
(4)在about view的响应中包含一个返回index page的链接

def index(request): return HttpResponse("Rango says hey there partner! about")def about(request): return HttpResponse("Rango says here is the about page、Index")

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。