Django开发系列之二

                 ----Django1.8.2中文文档阅读笔记

参考http://python.usyiyi.cn/django/index.html

Python环境参考:

http://blog.csdn.net/baixue6269/article/details/51365092

Django源文件位置

如果你找不到Django源文件在你系统上的位置,运行如下命令:

$ python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"

添加视图:

  1. 打开polls/views.py文件并将以下Python代码写入:

    from django.http import HttpResponse
    
        def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")
    
  2. 为了能够调用这个视图,我们需要将这个视图映射到URL上 —— 利用一个URLconf。在polls/urls.py文件中键入如下代码:

    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^$', views.index, name='index'),
    ]
  3. 下一步,让主URLconf可以链接到polls.urls模块。在mysite/urls.py中插入一个include():

    from django.conf.urls import include, url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^polls/', include('polls.urls')),
        url(r'^admin/', include(admin.site.urls)),
    ]
  4. 启动服务器
    在你的浏览器中浏览 http://localhost:8000/polls/ , 你会看到 “Hello, world. You’re at the polls index.”, 正如你在index 视图中定义的那样.

url函数介绍

url()函数具有四个参数:两个必需的regex和 view,以及两个可选的kwargs和name。 到这里,就可以研究下这些参数的含义了:
  1. url() 参数:regex
    术语“regex”是“regular expression(正则表达式)”的常用的一个缩写,是一种用来匹配字符串中模式的语法,在这里是URL模式。 Django从第一个正则表达式开始,依次将请求的URL与每个正则表达式进行匹配,直到找到匹配的那个为止。
    请注意,这些正则表达式不会检索URL中GET和POST的参数以及域名。 例如,对于http://www.example.com/myapp/请求,URLconf 将查找myapp/。对于http://www.example.com/myapp/?page=3请求,URLconf 也将查找myapp/。

  2. url() 参数:view
    当Django找到一个匹配的正则表达式时,它就会调用view参数指定的视图函数,并将HttpRequest对象作为第一个参数,从正则表达式中“捕获”的其他值作为其他参数,传入到该视图函数中。如果正则表达式使用简单的捕获方式,值将作为位置参数传递; 如果使用命名的捕获方式,值将作为关键字参数传递。一会儿,我们将给出一个例子。

  3. url() 参数:kwargs
    略。
  4. url() 参数:name
    命名你的URL。 这样就可以在Django的其它地方尤其是模板中,通过名称来明确地引用这个URL。 这个强大的特性可以使你仅仅修改一个文件就可以改变全局的URL模式。

编写更多的视图

  1. 现在让我们给polls/views.py添加一些更多的视图。这些视图和之前的略有不同,因为它们另带了一个参数:

    polls/views.py
    def detail(request, question_id):
        return HttpResponse("You're looking at question %s." % question_id)
    
    def results(request, question_id):
        response = "You're looking at the results of question %s."
        return HttpResponse(response % question_id)
    
    def vote(request, question_id):
        return HttpResponse("You're voting on question %s." % question_id)
  2. 通过下面的url() 调用将这些新的视图和polls.urls模块关联起来:

    polls/urls.py
    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        # ex: /polls/
        url(r'^$', views.index, name='index'),
        # ex: /polls/5/
        url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
        # ex: /polls/5/results/
        url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
        # ex: /polls/5/vote/
        url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
    ]

    在你的浏览器中访问“/polls/34/”。它将运行detail()方法并显示你在URL中提供的ID。 再试一下“/polls/34/results/”和“/polls/34/vote/” —— 它们将显示出对应的结果界面和投票界面。

    以下是如果一个使用者访问“/polls/34/”,系统中将会发生的事:

    Django发现匹配到了正则表达式’^polls/’

    然后,Django将去掉匹配到的文本(”polls/”))并将剩下的文本 —— “34/” —— 发送给‘polls.urls’ URLconf 做进一步处理,这时将匹配r’^(?P[0-9]+)/$’并导致像下面这样调用detail()视图:

    detail(request=, question_id=’34’)
    question_id=’34’部分来自(?P[0-9]+)。使用圆括号包围一个模式可以“捕获”该模式匹配的文本并将它作为一个参数传递给视图函数;?P 定义一个名字,它将用于标识匹配的模式;[0-9]+是匹配一串数字的正则表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技追踪者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值