《Tango With Django2》 Chapter3笔记 -- Django基础

(项目运行虚拟环境: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 <name>
#进入项目目录
$ 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 <your_machines_ip_address>:5555

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

$ python manage.py runserver 0.0.0.0:5555

其他人访问 http://<your_machines_ip_address>:/ 就可以访问你的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目录应如下图所示:
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 views

urlpatterns = [ 
	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 view

app_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 <projectName>
# 或者
$ django-admin startproject <projectName>

创建一个新的 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! <a href='/rango/about/'>About</a>")

def about(request):
    return HttpResponse("Rango says here is the about page. <a href='/rango/'>Index</a>")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值