网页程序的逻辑:request进来 -> 从服务器获取数据 -> 处理数据 -> 把网页呈现出来
url 设置相当于客户端向服务器发出request请求的入口,并用来指明要调用的程序逻辑
views 用来处理程序逻辑,然后呈现到template(一般为GET方法,POST方法略有不同)
template 一般为html+CSS的形式,主要是呈现给用户的表现形式
Django中views里面的代码时一个一个函数逻辑,处理客户端(浏览器)发送的HTTPRequest,然后返回HTTPResponse。
那么开始在my_blog/article/views.py中编写简单的逻辑
-
from django.shortcuts import render
-
from django.http import HttpResponse
-
# Create your views here.
-
def home(request):
-
return HttpResponse("Hello World, Django")
如何使这个逻辑在http请求进入时被调用,这里需要在my_blog/my_blog/urls.py中进行url设置
-
# -*- coding: utf-8 -*-
-
from django.conf.urls import patterns, include, url
-
from django.contrib import admin
-
urlpatterns = [
-
# url(r'^$', 'article.views.home'),
-
# url(r'^(?P<my_args>\d+)/$', 'article.views.detail', name='detail'),
-
url(r'^admin/', admin.site.urls),
-
url(r'^$', 'article.views.home'),
-
]
url() 函数有四个参数,两个是必须的:regex和views,两个可选的:kwargs和name
regex是regular expression的简写,这是字符串中的模式匹配的一种语法,Django将请求的URL从上至下依次匹配列表中的正则表达式,直到匹配到一个为止。
view当Django匹配了一个正则表达式就会调用指定的view逻辑,上面代码中会调用article/views.py中的home函数
kwargs任意关键字参数可传一个字典至目标view
name命名你的URL,使url在Django的其他地方使用,特别是在模块中
很多时候我们希望给view中的函数逻辑传入参数,从而呈现我们想要的结果
现在再my_blog/article/views.py 加入如下代码:
-
def detail(request, my_args):
-
return HttpResponse("You're looking at my_args %s." % my_args)
在my_blog/my_blog/urls.py 中设置对应的url
-
urlpatterns = [
-
# url(r'^$', 'article.views.home'),
-
# url(r'^(?P<my_args>\d+)/$', 'article.views.detail', name='detail'),
-
url(r'^admin/', admin.site.urls),
-
url(r'^$', 'article.views.home'),
-
url(r'^(?P<my_args>\d+)/$', 'article.views.detail', name='detail'),
-
]
^(?P<my_args>\d+)/$
这个正则表达式的意思是将传入的一位或者多位数字作为参数传递到views中的detail作为参数, 其中?P<my_args>
定义名称用于标识匹配的内容
输入以下url:
http://localhost:8000/1000/
-
# Home page.
-
url(r'^$', views.index, name='index'),
-
# 显示所有的主题
-
url(r'^topics/$', views.topics, name="topics"),
-
# 特定主题的详细页面
-
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name="topic"),
-
# 用于添加新主题的网页
-
url(r'^new_topic/$', views.new_topic, name="new_topic"),
转载自https://blog.csdn.net/xiaoquantouer/article/details/51792860