Django1.7学习笔记(三)
来源:互联网 发布:linux知识点总结 编辑:程序博客网 时间:2024/06/05 07:25
前面两节我们已经讲了如何创建一个项目和配置数据库和后台,现在我们看看怎样创建自己的网页.
一.写第一个视图
首先在应用程序中的view.py写一个最简单的视图:
现在视图已经写好了,但是怎样访问我们的视图了?这里就需要进行URL配置了,根据官方文档和其他资料这里有两种配置URL的方案:
方案一:(The Django Book 2.0中用的方法)
直接在mysite文件夹(settings.py所在的文件夹)下找到urls.py,进行配置:如下
from django.conf.urls import patterns, include, url
from django.contrib import admin
from polls.views import *
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'DjangoS.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^index/$',index),
)
首先是导入刚刚编辑的views.py,以便与导入我们的index函数,然后在下面的元组中配置URL,给了相应的例子,url()函数的第一个参数就是访问的URL路径,这里用的是正则表达式,正则表达式不熟的自己查一下相关只知识,很简单的(最下面的附录中也有一些简单的参考);第二个参数就是用该那个函数来处理这个请求,这里我们用的是views.py中的index函数来处理请求.开启服务器,然后通过http://127.0.0.1:8000/index 来访问我们的视图,会看到页面显示Hello world! Django! 是不是很简单!!!!!比struts简单多了!
方案二:(Django1.7官方文档用的方法,推荐方案)
views.py不用改动和方案一一样,然后在polls中新建一个urls.py文件,内容如下:
url()函数中的第一个参数还是正则表达式,第二个蚕参数为处理请求的函数,第三个参数只是其标识作用,可以不要,不过最好写上,前两个蚕参数时必需的!
最后在mysite文件夹中的urls.py中进行配置,如下:
注意方案一和方案二的异同点,方案二虽然麻烦一些,给人一种多此一举的感觉,但是官方文档用的就是方案二,方案一根本就没提,不过方案二这样做肯定有他的好处,至于好处嘛,马上你就会知道了!
大致讲一下处理视图的流程和原理吧:
进来的请求转入/index/.
Django通过在ROOT_URLCONF配置来决定根URLconf.(创建项目时以自动配置了)
ROOT_URLCONF = 'mysite.urls'
Django在URLconf中的所有URL模式中,查找第一个匹配/index/的条目。
如果找到匹配,将调用相应的视图函数
视图函数返回一个HttpResponse
Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
有时候我们还有根据URL传递过来的参数进行不同的操作,比如/polls?id=5,但这样的URL并不优雅漂亮,还可能受到脚本小子的SQL注入攻击,Django中用/polls/5/的方式来代替前面的参数传递.
这里还是分两种方案,对应上面的两种URL配置方案.
方案一:(The Django Book 2.0中用的方法)
首先时/polls/views.py文件中的视图:
然后是/mysite/urls.py中的URL配置了:
from django.conf.urls.defaults import *from mysite.views import hello, current_datetime, hours_aheadurlpatterns = patterns('', (r'^polls/(\d{1,2})/$', hours_ahead),)这里的数字为一个一位数或者两位数,可以通过:http://127.0.0.1:8000/polls/2来访问
方案二:(Django1.7官方文档用的方法,推荐方案)
首先还时views.py不变,views.py在两种方案中都是一样的,然后就是/polls/urls.py文件了配置如下:
仔细观察红色字体的地方,然后就是配置/mysite/urls.py文件了:
其实/mysite/urls.py已经不用配置了,因为在第一步中已经配好了,不需要表变动!现在体会到方案二的方便性了吧!
注意:/polls/view.py中的函数参数名question_id和/polls/urls.py中的正则表达式中的question_id要一致,否则参数传递不进来!
三.使用模板
如果把HTML页面放在views.py中返回那就太麻烦了,这里就用到了模板,就是建立一个html文件,里面设置一些参数,通过views.py加载html然后传递参数到html中,在返回给浏览器,学过JSP的朋友应该很熟悉,就是类似于JSP.
这里我们建立一个模板:
TEMPLATE_DIRS = [os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/')]
然后在/polls/view.py中加载模板,添加参数:
from django.shortcuts import render_to_responseimport datetimedef current_datetime(request): now = datetime.datetime.now() return render_to_response('current_datetime.html', {'current_date': now})
- Django1.7学习笔记(三)
- Django1.10文档学习笔记三
- Django1.7学习笔记(一)
- Django1.7学习笔记(二)
- Django1.7学习笔记(四)
- Django1.7学习笔记(五)
- Django1.9学习笔记
- django1.5学习笔记(1)
- Django1.8学习笔记总结(基础+settings)
- Django1.10文档学习笔记一
- Django1.10文档学习笔记二
- Django1.10文档学习笔记四
- Django1.10文档学习笔记五
- django1.5 官方文档阅读笔记(三)
- [Django1.5]two-scoops-django-best-practices 笔记三
- django学习笔记(一):Python2.7 、Django1.2下载及安装
- Django1.3.1笔记
- django1.10 使用笔记
- MFC TreeControl为复选框添加响应函数
- (一) UNIX基础知识
- 聚类分析之基于密度的聚类算法OPTICS
- LeetCode Word Search
- 12条ios软件开发经验总结
- Django1.7学习笔记(三)
- 如何挑选无线路由器?
- [Leetcode]Longest Palindromic Substring
- 多态
- Maximum Subarray
- Centos配置国内yum源
- Http,Https(SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2的配置和使用
- Java中的基本数据模型的转换
- 苹果信息推送服务(Apple Push Notification Service)使用总结