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)),)
说明:
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)
运行效果:
{% 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 ...
随机推荐
- linux下使用yum安装 mencached
1. 安装 yum -y install memcached 2. 启动memcached ./usr/bin/memcached -d -m 256 -u root -p 11211 -c 1024 ...
- maven的多环境配置
<profiles> <profile> <id>dev</id> <activation> <activeByDefault> ...
- Java -- 异常的捕获及处理 -- 范例 -- throw与throws的应用
7.2.3 范例 -- throw与throws的应用 例:综合应用 Class : Math package limeThrowable._7_2_3; public class Math { pu ...
- 5 -- Hibernate的基本用法 --4 深入Hibernate配置文件
Hibernate的持久化操作离不开SessionFactory对象,这个对象是整个数据库映射关系经过编译后的内存镜像,该对象的openSession()方法可打开Session对象.该对象通常由Co ...
- win7+ oracle +php环境的搭建
http://blog.csdn.net/chchmlml/article/details/6887326 先下载个wmpp1.7.5(之前在xp上也是这个,所以就继续),安装,一切顺利,打开phpi ...
- win10禁止更新的方法
Windows10强制更新苦恼了很多人,下面提供三种禁止Windows10更新的方法. 禁止Windows update服务 启动任务管理器->选择服务->打开服务. 找到Windows ...
- 详解 Tomcat 的连接数与线程池(转)
很不错的文章 https://juejin.im/post/5a0bf917f265da432d27a215
- linux环境下执行RF测试脚本
1. 测试执行 测试管理平台需根据用户选中的测试案例,按照相应格式对执行启动命令进行组装和发送,触动案例的自动化测试执行. 命令格式根据测试模式(以项目为单位.以测试集为单位.以案例为单位)具有不同的 ...
- AngularJs HTML DOM、AngularJS 事件以及模块的学习(5)
今天的基础就到了操作DOM,事件和模块的学习,其实我个人感觉学习起来AngularJS并没有想象中的那么的艰难,可能是因为这个太基础化吧,但是我们从初学开始就应该更加的自信一些,后来我可能会写一个小的 ...
- 在css中 父元素不固定高度,怎样实现子元素的高度100%
父元素使用 position: relative; 子元素使用 position: absolute; height: 100%;