码迷,mamicode.com
首页 > Web开发 > 详细

Django基础2---url控制器模块与views视图模块

时间:2018-03-31 00:34:56      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:初始   sof   serve   and   匹配   两种   分享   路径   分配   

url控制器:

主要是用于url的分发功能,如用户输入:127.0.0.1:8080/apptest

配置url才能使django正确识别用户的输入

未配置url报错类型如下:

 

技术分享图片

 

进行正确的url配置:

打开项目下的urls.py文件:

初始urls文件如下:

from django.conf.urls import url
from django.contrib import admin
from app01 import views


urlpatterns = [
    url(r^admin/, admin.site.urls),
]

在urlpatterns这个字典内进行你的url配置

如:

首先应该导入你的视图函数:from appname import views

url(regex,view,kwargs),填写路径的正则表达式,这样才可以匹配到输入的url,第二个参数调用视图内的处理函数:url()后必须加逗号用于与其他url的区别,不然django无法识别

一个基本的请求响应就是:用户输入url-------url控制器进行匹配------寻找相应的视图内与之对应的处理函数

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(rshow_time/, views.show_time), 
]

随后在views.py进行对应url处理函数的代码,这里处理函数尽量与路径名称有一些关联性,出错的话也好找到进行修改

 

视图中的show_time()处理函数:

from django.shortcuts import render,HttpResponse

import time 
...
...
...


def show_time(request):  函数的参数必须有,接受http请求与处理都封存在参数内
    times = time.time()
    return HttpResponse(times) # 作为测试 这里返回一个http响应

启动这个webapp:

1.

cmd或者pycharm下的cmd:

命令:python manage.py runserver 8080  这里的端口号不要填被占用的端口号就行

2.

pycharm右上角的运行log也可以运行当前项目的webapp

 

url的命名规则分为两种:1、无命名规则  2、有命名规则

第一种:

url匹配的正则只要能够匹配上就行 ,如 url(r‘/d+/d+‘,) 只要输入的url有数字  则django就可以找到再到视图中寻找处理的函数

 

第二种:

正则表达式进行分组:如url(r‘^article/(?P<year>(\d+))/(?P<month>\d+)‘,views.article_year_month) 命名url,函数参数必须与命名形式相同  对应的函数及参数:article_year_month(request, year, month)

 

url的分发功能:

这种问题的出发点就在于如果一个项目有很多web应用和大量的url,url匹配全部写在urls.py下,出错不易寻找,调理不清晰,所以url分发是一个很重要的一点。

特点:将与web应用对应的url放在应用下,新建urls.py,如图黄色标注的为新建的;红色标注的为主路由

技术分享图片

 

这样看起来条例清晰了很多,blog下的子链全部放在blog下的urls内:

项目主路由对应的urls内说明了分发功能该如何使用:

Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r‘^blog/‘, include(‘blog.urls‘))

用法:在主路由urls这样修改:新增URLconf下的include模块
from django.conf.urls import url, include

urlpatterns增加如下内容:

假如你有两个webapp:一个是blog  一个为pay

urlpatterns = [
url(r‘^blog/‘, include(‘blog.urls‘)),

url(r‘pay/‘, include(‘pay.urls‘))

......

.......
]

然后到对应的webapp下urls内添加代码:

"""
url分发功能,将urls子链分配到每一个webAPP下urls
"""

from django.conf.urls import url
from blog import views


urlpatterns = [

    # url(r‘^clock_time/‘, views.clock_time),

]

这样的话再到浏览器进行访问:url就应该这么写才能访问到,因为这个子链已经被分配到blog下的url

技术分享图片

 

views视图模块:

http请求产生两个核心对象:

  http请求:HttpRequest对象

  http响应:HTTPResponse对象

所在位置:django.http

 

HttpRequest对象

class HttpRequest[source]
属性

除非另有说明,否则所有属性均应视为只读。

HttpRequest.scheme
表示请求方案的字符串(http或https 通常)。

HttpRequest.body
原始HTTP请求主体作为字节字符串。这对于以不同于传统HTML表单的方式处理数据很有用:二进制图像,XML有效载荷等。为了处理传统表单数据,请使用 HttpRequest.POST。

您也可以HttpRequest使用类似文件的界面进行阅读。看 HttpRequest.read()。

HttpRequest.path
表示请求页面的完整路径的字符串,不包括方案或域。

例: "/music/bands/the_beatles/"

HttpRequest.path_info
在某些Web服务器配置下,主机名后的URL部分被分成脚本前缀部分和路径信息部分。path_info无论使用什么Web服务器,该属性始终包含路径的路径信息部分。使用此代替path可以使代码更容易在测试和部署服务器之间移动。

例如,如果WSGIScriptAlias你的应用程序设置为 "/minfo",则path可能是"/minfo/music/bands/the_beatles/" 和path_info会"/music/bands/the_beatles/"。

HttpRequest.method
表示请求中使用的HTTP方法的字符串。这保证是大写的。例如:

if request.method == ‘GET‘:
do_something()
elif request.method == ‘POST‘:
do_something_else()
HttpRequest.encoding
表示当前编码的字符串,用于解码表单提交数据(或者None,表示使用该DEFAULT_CHARSET设置)。您可以写入此属性来更改访问表单数据时使用的编码。任何后续的属性访问(例如读取GET或POST)将使用新encoding值。如果您知道表单数据不在DEFAULT_CHARSET 编码中,这很有用。

HttpRequest.content_type
表示请求的MIME类型的字符串,从CONTENT_TYPE标头解析 。

HttpRequest.content_params
包含在CONTENT_TYPE 标题中的键/值参数字典。

HttpRequest.GET
包含所有给定的HTTP GET参数的类似字典的对象。请参阅QueryDict下面的 文档。

HttpRequest.POST
包含所有给定的HTTP POST参数的类似字典的对象,前提是请求包含表单数据。请参阅QueryDict下面的 文档。如果您需要访问请求中发布的原始数据或非表单数据,请HttpRequest.body改为通过属性访问此数据 。

有可能请求可以通过POST发送一个空POST 字典 - 例如,如果通过POST HTTP方法请求表单但不包含表单数据。因此,您不应该使用 检查POST方法的用法; 相反,使用(见)。if request.POSTif request.method == "POST"HttpRequest.method

POST它不包含文件上传信息。看FILES。

HttpRequest.COOKIES
包含所有Cookie的字典。键和值是字符串。

HttpRequest.FILES
包含所有上传文件的类似字典的对象。每个关键 FILES是name从。每个值都是一个。<input type="file" name="" />FILESUploadedFile

FILES将只包含数据,如果请求方法是POST和<form>发布到请求的方法 enctype="multipart/form-data"。否则,FILES将是一个空白字典式的对象。

 

Django基础2---url控制器模块与views视图模块

标签:初始   sof   serve   and   匹配   两种   分享   路径   分配   

原文地址:https://www.cnblogs.com/mzc1997/p/8678231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!