博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django"动态网页","动态url","调试方法"
阅读量:6004 次
发布时间:2019-06-20

本文共 2519 字,大约阅读时间需要 8 分钟。

一、动态网页

  其实只是每次刷新时,获取最新时间而已

  1、urls.py

from django.conf.urls import patterns, url, includeurlpatterns = patterns('',                       (r'^$','django_web_app.views.home_page'),                       (r'^latest_books/$', 'django_web_app.views.latest_books'),                       (r'^current_datetime/$', 'django_web_app.views.current_datetime'),)

  2、views.py

#coding:utf-8from django.http import HttpResponsefrom django.shortcuts import render_to_responsefrom models import Bookimport datetimedef latest_books(request):    #倒叙获取最新出版的10本书    book_list = Book.objects.order_by('-pub_date')[:10]    return render_to_response('latest_books.html', {
'book_list': book_list})def home_page(request): return render_to_response('home_page.html')def current_datetime(request): now = datetime.datetime.now() html = "It is now %s." % now return HttpResponse(html)

  3、运行结果:

    

二、动态url

  其实就是用正则表达式,使多个不完全确定的url对应一个“视图函数”

  1、urls.py

from django.conf.urls import patterns, url, includeurlpatterns = patterns('',                       #...                       (r'^current_datetime/plus/(\d{1,2})/$', 'django_web_app.views.hour_plus'),)

  说明如果不需要将\d{1,2}作为参数,则可以不加括号,访问效果不受影响。

from django.conf.urls import patterns, url, includeurlpatterns = patterns('',                       #...                       (r'^current_datetime/plus/\d{1,2}/$', 'django_web_app.views.hour_plus'),)

  关于r的作用:

    告诉Python这是个原始字符串,不需要处理里面的反斜杠(转义字符)。

   在普通Python字符串中,反斜杠用于特殊字符的转义。由于反斜杠在Python代码

  和正则表达式中有冲突,因此建议在Python定义正则表达式时都使用原始字符串。

  附:普通python里的一些转义字符:

  

  2、views.py中新增部分:

def hour_plus(request, offset):    try:        offset = int(offset)    except ValueError:        raise Http404()    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)    html = "In %s hour(s), it will be %s." % (offset, dt)    return HttpResponse(html)

  说明:offset 是从匹配的URL里提取出来的,捕获的参数永远是字符串(string)类型,而

    不会是整数(integer)类型,要使用整数必须类型转换。

  3、运行结果:

   1)不可匹配的url

   

   2)可匹配的url

   

三、出错与调试习惯

  django出错页可以显示足够多的相关信息,开发中尽量通过“出错页面”来调试,而不是到处使用print。

  eg:查看各个局部变量的值

def hour_plus(request, offset):    try:        offset = int(offset)    except ValueError:        raise Http404()    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)    assert False    html = "In %s hour(s), it will be %s." % (offset, dt)    return HttpResponse(html)

 

   此处使用了assert False

   运行结果:

   

   说明:Django 出错信息仅在 debug 模式下才会显现Django 服务器在你开启它时默认运行在 debug 模式

     但是实际部署的时候需要禁用debug模式。

 

   参考:

 

  

 

 

转载于:https://www.cnblogs.com/edisonfeng/p/3755639.html

你可能感兴趣的文章
putty 无密码ssh linux
查看>>
转载:INF文件简介
查看>>
软件工程师的职业规划
查看>>
自主翻译_cache对象体系结构(三)
查看>>
巧妙地添加GridView的 网格线
查看>>
heartbeat+rsync+inotify+samba双机热备方案
查看>>
mac 安装svn new
查看>>
使用python进行web抓取 Web Scraping with Python
查看>>
mysql 主从配置 和 主主配置
查看>>
我的友情链接
查看>>
Linux 环境变量介绍
查看>>
Eclipse 工作台用户指导>透视图
查看>>
网络机顶盒适用于哪些人群
查看>>
cm5.12安装连接mysql出现访问拒绝
查看>>
我的友情链接
查看>>
LVM逻辑卷管理命令
查看>>
Linux中终端切换到图形界面
查看>>
用过滤器处理乱码问题
查看>>
我的友情链接
查看>>
Android下拉刷新以及自动加载更多
查看>>