python-django开发学习笔记三
1.简述
1.1 开发环境
该笔记所基于的开发环境为:windows8、python2.7.5、psycopg2-2.4.2、django1.5.4、pyCharm-2.7.3。以上所描述的软件、插件安装、破解等可以参考之前的python笔记,提供了具体的资源链接和操作步骤。
1.2 django学习笔记简介
django学习基于官网提供的投票应用,是学习该应用编写过程中,遇到的问题、知识点、注意问题等的总结,同时包含大量学习过程中的截图,方便大家更直观的学习。
它将包含两部分:
一个公共网站,可让人们查看投票的结果和让他们进行投票。
一个管理网站,可让你添加、修改和删除投票项目。
官网文档链接为http://django-chinese-docs.readthedocs.org/en/latest/
1.3 关于笔记
同样作为初学者,写这篇文章时,刚刚看到教程的第4部分,笔记中有不足之处,还希望大家指正,真心与大家共同讨论学习!
在 Django 应用程序中,视图是一“类”具有特定功能和模板的网页。在我们的 poll 应用程序中,将有以下四个视图:
- Poll “index” 页 – 显示最新发布的民意调查。
- Poll “detail” 页 – 显示一项民意调查的具体问题,不显示该项的投票结果但可以进行投票的 form 。
- Poll “results” 页 – 显示一项给定的民意调查的投票结果。
- 投票功能 – 为一项给定的民意调查处理投票选项。
- ------------------------------------------------
博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
店名:
小鱼尼莫手工饰品店
经营:
发饰、头花、发夹、耳环等(手工制作)
网店:
http://shop117066935.taobao.com/
---------------------------------------------------------------------
继续正题...
- # views.py
- from django.http import HttpResponse
- def index(request):
- return HttpResponse("Hello, world. You're at the poll index.")
b).在 polls 目录下创建一个名为 urls.py 的 URLconf 文档。 你的应用目录现在看起来像这样
- # polls/urls.py
- from django.conf.urlsimport patterns, url
- from pollsimport views
- urlpatterns = patterns('',
- url(r'^$', views.index, name='index'))
d).将 polls.urls 模块指向 root URLconf 。在 mysite/urls.py 中插入一个 include() 方法,最后的样子如下所示
- # mysite/urls.py
- from django.conf.urls import patterns, include, url
- from django.contrib import admin
- admin.autodiscover()
- urlpatterns = patterns('',
- url(r'^polls/', include('polls.urls')),
- url(r'^admin/', include(admin.site.urls)),)
说明:
.png)
- url(regex, view ,kwargs, name)
- eg:
- # /polls/
- url(r'^$', views.index, name='index')
- # /polls/5
- url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
- # /polls/5/results
- url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
3.3在视图中添加实际功能
- from django.http import HttpResponse
- from polls.models import Poll
- def index(request):
- latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
- output = ', '.join([p.question for p in latest_poll_list])
- return HttpResponse(output)
运行效果:
.png)
- {% if latest_poll_list %}
- <ul>
- {% for poll in latest_poll_list %}
- <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
- {% endfor %}
- </ul>{% else %}
- <p>No polls are available.</p>
- {% endif %}
view.py视图文件
- from django.http import HttpResponse
- from django.template import Context, loader
- from polls.models import Poll
- def index(request):
- latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
- template = loader.get_template('polls/index.html')
- context = Context({
- 'latest_poll_list': latest_poll_list,
- })
- return HttpResponse(template.render(context))
3.5 render渲染方法(快捷方式)
- def index(request):
- latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
- context = {'latest_poll_list': latest_poll_list}
- return render(request, 'polls/index.html', context)
ps: 此时,不再需要导入 loader , Context 和 HttpResponse
- from django.http import Http404
- # ...
- def detail(request, poll_id):
- try:
- poll = Poll.objects.get(pk=poll_id)
- except Poll.DoesNotExist:
- raise Http404
- return render(request, 'polls/detail.html', {'poll': poll})
- # template:polls/details.html
- {{ poll }}
- #快捷方式
- from django.shortcuts import render, get_object_or_404
- # ...
- def detail(request, poll_id):
- poll = get_object_or_404(Poll, pk=poll_id)
- return render(request, 'polls/detail.html', {'poll': poll})
3.7 编写404视图??? 未完成
- <h1>{{ poll.question }}</h1>
- <ul>
- {% for choice in poll.choice_set.all %}
- <li>{{ choice.choice_text }}</li>
- {% endfor %}
- </ul>
- <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
- <li><ahref="{%url'detail'poll.id%}">{{poll.question}}</a></li>
可在url中统一修改url值
- url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
- url(r'^specifics/(?P<poll_id>\d+)/$',views.detail,name='detail'),
4.2 Namespacing URL names URL 名称的命名空间
url定义时,添加namespace
- from django.conf.urls import patterns, include, url
- from django.contrib import adminadmin.autodiscover()
- urlpatterns = patterns('',
- url(r'^polls/', include('polls.urls', namespace="polls")),
- url(r'^admin/', include(admin.site.urls)),)
视图添加namespace
- <li><ahref="{%url'polls:detail'poll.id%}">{{poll.question}}</a></li>
ps: 视图文件修改阶段
- #最初,在视图中写下相对路径
- #当后期需要修改时会很麻烦,因为相应的每一个视图文件都需要修改
- <a href="/polls/{{ poll.id }}/">
- #后期,相对于url定义的detail名称
#仍有问题,即多模块都有detail时会出现问题- <a href="{% url 'detail' poll.id %}">
- # 最后,使用命名空间,明确是polls模块的detail
- # 后期若需要修改,只需要修改相应的url定义即可,不必修改视图文件;区分多模块detail冲突
- <a href="{% url 'polls:detail' poll.id %}">
- {{ poll.question }}
- </a>
店名:
小鱼尼莫手工饰品店
经营:
发饰、头花、发夹、耳环等(手工制作)
网店:
http://shop117066935.taobao.com/
python-django开发学习笔记三的更多相关文章
- python web开发学习笔记一:javascript基础
一.认识js: 能进入到软件所实习是我的最大的收获,也是我的荣幸,我相信努力付出一定能够换回收获. 项目最先开始的是接触到web前端的一些内容,我们需要利用flask搭建应该有的框架.我有一些pyth ...
- python网络编程学习笔记(三):socket网络服务器(转载)
1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较. 步骤 TCP客户端 TCP服务器 第一步 建立socket对象 建立socket对 ...
- python Django 相关学习笔记
Django框架 pip3 install django 命令: # 创建Django程序 django-admin startproject mysite # 进入程序目录 cd mysite # ...
- Photon + Unity3D 线上游戏开发 学习笔记(三)
好的,说了两篇了 如今我们正式的入手,揭开photon 的盖头哈 建立photon项目 第一步: 在Visual studio建立一个空的 待会为了測试也会在里面建立一个client 项目 (只 ...
- Python Flask 开发学习笔记
Flask学习 安装pipenv虚拟环境 pip Install pipenv 运行pipenv pipenv --version 进入虚拟容器 pipenv install 安装flask pipe ...
- The Definitive Guide To Django 2 学习笔记(三) URLconfs 和松耦合
前面的例子体现了一个设计模式中的重要思想,松耦合. 不论我们是将/time/改成/current_time/,还是新建一个/another-time-page/同样指向views.py中的 curre ...
- Django:学习笔记(1)——开发环境配置
Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Django初识 学习笔记一
Django初识 学习笔记一 mvcviewsmodelstemplate. 一 MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(c ...
随机推荐
- Openlayers 3计算长度和面积
1.比较粗糙的计算方式 计算长度 var length = lineFeature.getGeometry().getLength(); if (length > 1000) { length ...
- ajax+json+Struts2实现list传递(转载)
一.首先需要下载JSON依赖的jar包.它主要是依赖如下: json-lib-2.2.2-jdk15 ezmorph-1.0.4 commons-logging-1.0.4 c ...
- 史上最强大的python selenium webdriver的包装
1.之前已经发过两次使用单浏览器了,但是这个最完美,此篇并没有使用任何单例模式的设计模式,用了实例属性结果缓存到类属性. 2.最简单的控制单浏览器是只实例化一次类,然后一直使用这个对象,但每个地方运行 ...
- [RN] 01 - Init: Try a little bit of React Native
Ref: React Native跨平台移动应用开发 后记:这本书博客味有点浓. 本篇涉及新建工程的若干套路,以及一点语法知识. 创建新工程 (1) 解决的一大核心问题: (2) 使用Javascri ...
- 禁用滚动视图ListView、ViewPager、ScrollView、HorizontalScrollView、WebView边界颜色渐变
禁用滚动视图ListView.ViewPager.ScrollView.HorizontalScrollView.WebView边界颜色渐变 ListView.ViewPager.ScrollView ...
- [AX]AX2012 R2 EP员工自助服务中的产品不能显示图片的问题
在员工自助服务EP站点中员工可以通过Order products自助提交采购申请,在正确设置员工采购目录后会罗列出允许员工购买的产品,每个产品都可带有图片,我们可以通过Product image来为产 ...
- Window日志分析
0X00 简介 0x01 基本设置 A.Windows审核策略设置 前提:开启审核策略,若日后系统出现故障.安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等. 打开设置窗口 Window ...
- Apache安全配置基线指导
搜索关键词:Apache安全配置基线指导 参考链接: windows服务器下Apache 的降权 https://www.landui.com/help/show-1749.html
- Git 学习笔记--3.EGit使用手册
zz http://blog.csdn.net/pandakong/article/details/7234974 EGit是Eclipse上的Git插件,官方内容参看http://wiki.ecli ...
- Python 网络爬虫
爬虫介绍 爬取图片 爬取文本 爬虫相关模块:re 爬虫相关模块:urllib 爬虫相关模块:urllib2 爬虫相关模块:cookielib 爬虫相关模块:requests 爬取需要登录的页面