Django搭建简易博客教程(六)-Views和URL
admin
2023-07-30 20:42:04
0

整个项目已经放在Github上, 随时更新, 项目地址


貌似Markdown解析出问题了, @简书

网页程序的逻辑


request进来->从服务器获取数据->处理数据->把网页呈现出来

  • url设置相当于客户端向服务器发出request请求的入口, 并用来指明要调用的程序逻辑
  • views用来处理程序逻辑, 然后呈现到template(一般为GET方法, POST方法略有不同)
  • template一般为html+CSS的形式, 主要是呈现给用户的表现形式

简单Django Views和URL


Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse,

那么那么开始在my_blog/article/views.py中编写简单的逻辑

#现在你的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设置

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)
#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)
#39;, \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)
#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)
#39;, \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)#39;, \'article.views.home\'),  #由于目前只有一个app, 方便起见, 就不设置include了
)

url()函数有四个参数, 两个是必须的:regex和view, 两个可选的:kwargs和name

  • regex是regular expression的简写,这是字符串中的模式匹配的一种语法, Django 将请求的URL从上至下依次匹配列表中的正则表达式,直到匹配到一个为止。

更多正则表达式的使用可以查看Python正则表达式

  • view当 Django匹配了一个正则表达式就会调用指定的view逻辑, 上面代码中会调用article/views.py中的home函数
  • kwargs任意关键字参数可传一个字典至目标view
  • name命名你的 URL, 使url在 Django 的其他地方使用, 特别是在模板中

现在在浏览器中输入127.0.0.1:8000应该可以看到下面的界面

成功
成功

Django Views和URL更近一步

很多时候我们希望给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 = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'article.views.home\'),
    url(r\'^(?P\\d+)/
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'article.views.detail\', name=\'detail\'),
)#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'article.views.home\'),
    url(r\'^(?P\\d+)/
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'article.views.detail\', name=\'detail\'),
)#39;, \'article.views.home\'),
    url(r\'^(?P\\d+)/urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'article.views.home\'),
    url(r\'^(?P\\d+)/
urlpatterns = patterns(\'\',
    # Examples:
    # url(r\'^$\', \'my_blog.views.home\', name=\'home\'),
    # url(r\'^blog/\', include(\'blog.urls\')),

    url(r\'^admin/\', include(admin.site.urls)),
    url(r\'^$\', \'article.views.home\'),
    url(r\'^(?P\\d+)/$\', \'article.views.detail\', name=\'detail\'),
)
#39;, \'article.views.detail\', name=\'detail\'),
)#39;, \'article.views.detail\', name=\'detail\'),
)

^(?P\\d+)/$这个正则表达式的意思是将传入的一位或者多位数字作为参数传递到views中的detail作为参数, 其中?P定义名称用于标识匹配的内容

一下url都能成功匹配这个正则表达数

  • http://127.0.0.1:8000/1000/
  • http://127.0.0.1:8000/9/

尝试传参访问数据库

修改在my_blog/article/views.py代码:

from django.shortcuts import render
from django.http import HttpResponse
from article.models import Article

# Create your views here.
def home(request):
    return HttpResponse(\"Hello World, Django\")

def detail(request, my_args):
    post = Article.objects.all()[int(my_args)]
    str = (\"title = %s, category = %s, date_time = %s, content = %s\" 
        % (post.title, post.category, post.date_time, post.content))
    return HttpResponse(str)

这里最好在admin后台管理界面增加几个Article对象, 防止查询对象为空, 出现异常

现在可以访问http://127.0.0.1:8000/1/

显示如下数据表示数据库访问正确(这些数据都是自己添加的), 并且注意Article.objects.all()返回的是一个列表

数据
数据

小结:

  • 如何编写views和设置url
  • 如何通过url向views传参
  • 如何通过参数来访问数据库资源

markdown解析出问题了, 可以看这个链接Django搭建简易博客教程(六)-Views和URL

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...