zoukankan      html  css  js  c++  java
  • url&视图


    django.cof.url.defaults


    django.cof.url.defaults.patterns()

    1
    2
    3
    4
    5
    6
    7
    urlpatterns = patterns('',    # Example:
        # (r'^mysite/', include('mysite.foo.urls')),
        # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
        # to INSTALLED_APPS to enable admin documentation:
        # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
        # Uncomment the next line to enable the admin:
        # (r'^admin/', include(admin.site.urls)),)
    

    在这个函数中添加元组映射:正则表达式->视图函数

    在正则表达式中,'^admin/'将会和以admin为开头的url匹配,如/admin/user/

    'admin/$'将会和以admin为结尾的url匹配,如/01/lal/admin/

    为根目录实现视图:只需要添加正则表达式'^$'对应的视图函数就可以进行根目录的匹配

    django.cof.url.defaults.include()

    1
    include(arg, namespace=None, app_name=None):
    

    arg是url.py的位置字符串,指定的该url文件位置可以在所在文件配置patterns,实现松散耦合。

    namespace给url定义命名空间

    Django处理视图

    当运行python manage.py runserver时,脚本将在于manage.py的同目录下寻找setting.py文件,以寻找配置信息:

    Django处理视图的过程

    ROOT_URLCONF这个配置最为重要,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到

    1
    ROOT_URLCONF = 'mysite.urls'
    

    这个配置指向mysite/url.py文件,这是视图配置的文件

    ROOT_URLCONF配置URLconf,并且在URLpatterns中进行匹配url所映射的view函数并调用,且把HttpRequest对象作为第一个参数传入函数中

    视图函数返回一个HttpResponse

    Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来

    view函数的传参

    默认情况下,view的第一个参数是HttpRequest对象。但是对于URLpatterns中url正则表达式的强大应用,如果匹配到了不确定性的内容,就需要我们向view中传参进行处理。如:

    1
    2
    3
    4
    5
    from django.conf.urls.defaults import *
    from mysite.views import hello, current_datetime, hours_ahead
    urlpatterns = patterns('',    (r'^hello/$', hello),
        (r'^time/$', current_datetime),    (r'^time/plus/(d{1,2})/$', hours_ahead),
    )
    

    对于(d{1,2})的匹配,可能会有1-2位的整数出现,对于这种不确定的情况,我们想要对不同的值获取不同的结果,当然要在视图(view)中设置参数传入。

    1
    2
    3
    4
    5
    6
    from django.http import Http404, HttpResponseimport datetime
    def hours_ahead(request, offset):    try:        offset = int(offset)
        except ValueError:        raise Http404()
        dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
        html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
        return HttpResponse(html)
    

    offset 是从匹配的URL里提取出来的。 例如:如果请求URL是/time/plus/3/,那么offset将会是3;如果请求URL是/time/plus/21/,那么offset将会是21。请注意:捕获值永远都是字符串(string)类型,而不会是整数(integer)类型,即使这个字符串全由数字构成(如:“21”)。

    offset的位置很重要,它一定是view函数的第二个参数

    其中有一个非常重要也是老练的做法,就是传参进来之后,先要将参数进行类型转换(类型设定),比如offset需要int()一下,否则默认是str类型的

    还有一个地方,就是如果出现异常抛出了Http404

  • 相关阅读:
    [转]轻松掌握Ajax.net系列教程一:部署AJAX.NET
    [转]轻松掌握Ajax.net系列教程六:使用PopupControlExtender
    javascript页面跳转常用代码
    [转]轻松掌握Ajax.net系列教程二:部署Ajax Control Toolkit
    [转]轻松掌握Ajax.net系列教程五:使用TextBoxWatermarkExtender
    [转]轻松掌握Ajax.net系列教程三:使用CascadingDropDown组件
    [转]轻松掌握Ajax.net系列教程四:用Ajax.net实现客户端回调(Callback)
    mydate97时间控件在IE中不显示问题
    java中导入导出Excel表格(jxl的API应用)
    创建模态窗口
  • 原文地址:https://www.cnblogs.com/sunnysola/p/5380252.html
Copyright © 2011-2022 走看看