Django学习笔记第4、5记
来源:互联网 发布:mbd.baidu.com短域名 编辑:程序博客网 时间:2024/06/03 16:56
一、表单
1、request
request包含一些属性和方法:request.path,.get_host()等等
request.META中包含了本次HTTP请求的Header信息,常用的键值包括:HTTP_REFERER,HTTP_USER_AGENT,REMOTE_ADDR
使用如下例:
def ua_display(request):
ua=request.META.get('REMOTE_ADDR','unknown')
return HttpResponse("Your IP address is %s" % ua)
2、表单的属性
<form action="定义了目的文件的文件名" method="get/post">
<input type="text/radio/checkbox/submit" name=".." value="..">
3、数据提交
search_server.html:
<html>
<head>
<title>search_server</title>
</head>
<body>
<form action="/search/" method="get">
<input type="text" name="q">
<input type="submit" value="ipv4_server">
</form>
</body>
</html>
views.py里:
from django.shortcuts import render_to_response
def search_server_form(request):
return render_to_response('search_server.html')
urls.py里:
from rasp_test import views
urlpatterns = patterns('',
# ...
(r'^search_server_form/$', views.search_server_form),
# ...
)
4、数据查询
在search_server.html中,form的action属性设为/search/,即返回到/search/页面,所以在urls.py中增加
(r'^search/$', views.search),
然后在views.py中增加search函数
from models import Ipv4Server as ipv4server
def search(request):
if 'q' in request.GET and request.GET['q']:
q=request.GET['q']
ipv4servers=ipv4server.objects.filter(type__icontains=q)
return render_to_response('search_result.html',{'ipv4servers':ipv4se rvers,'query':q})
else:
return render_to_response('search_server.html',{'error':True})
然后编写search_result.html
1 <html>
2 <head>
3 <title>search_result</title>
4 </head>
5 <body>
6 <p>You searched for :<strong>{{query}}</strong></p>
7 {% if ipv4servers %}
8 <ul>
9 {% for ipv4server in ipv4servers %}
10 <li>{{ipv4server.webdomain}}</li>
11 {% endfor %}
12 </ul>
13 {% else %}
14 <p>No ipv4servers matched your search criteria.</p>
15 {% endif %}
16 </body>
17 </html>
在search_server.html中也进行修改
{% if error %}
<p style="color:red;">please submit a search term.</p>
{% endif %}
5、简化
def search(request):
error = False
if 'q' in request.GET:
q = request.GET['q']
if not q:
error = True
else:
ipv4servers = ipv4server.objects.filter(type__icontains=q)
return render_to_response('search_results.html',{'ipv4servers': ipv4servers, 'query': q})
return render_to_response('search_server.html',{'error': error})
省去了search_server_form()函数,在urls.py中也省去了相关url,单在/search/上进行操作,所以表单的action属性可删除。
6、Django的form框架(略)
二、高级URL配置
1、使用多个视图前缀
from django.conf.urls.defaults import *
urlpatterns = patterns('mysite.views', //利用字符串技术将共同前缀提取出来
(r'^hello/$', 'hello'),
(r'^time/$', 'current_datetime'),
(r'^time/plus/(\d{1,2})/$', 'hours_ahead'),
)
urlpatterns += patterns('weblog.views',
(r'^tag/(\w+)/$', 'tag'),
)
2、传递额外的参数至视图函数中
# urls.py
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^(foo)/$', views.foobar_view),
(r'^(bar)/$', views.foobar_view),
)
# views.py
from django.shortcuts import render_to_response
from mysite.models import MyModel
def foobar_view(request, url):
m_list = MyModel.objects.filter(is_new=True)
if url == 'foo':
template_name = 'template1.html'
elif url == 'bar':
template_name = 'template2.html'
return render_to_response(template_name, {'m_list': m_list})
0 0
- Django学习笔记第4、5记
- Django学习笔记第1记
- Django学习笔记第2记
- Django学习笔记第3记
- Django学习笔记第6记
- Django 学习笔记(5)
- Django 学习笔记(4)
- Django学习笔记(第三节) 动态URL
- Django学习笔记(第五节)模型(1)
- Django学习笔记(第五节)模型(2)
- Django 学习笔记(5)
- django学习笔记5:模型
- Django 学习笔记(4)
- Django学习笔记-4-模型
- django学习笔记4:模版
- Django第一天笔记
- Django 开发学习笔记(5)- 关于数据 ORM第 2 讲
- Django学习笔记--第一天--搭建一个简易博客
- JS中子类中如何调用父类的同名方法(继承时候,父类的同名方法被覆盖了)
- Java虚拟机(2)自动内存管理机制
- hadoop 自学指南一之安装hadoop
- JVM基础(一):内存空间分配及其回收原理
- Java虚拟机(3)自动内存管理机制
- Django学习笔记第4、5记
- UVA10596欧拉回路加特判
- 软工视频总结
- Opencv贴图的两种方式
- input链接新页面
- 我的征途是星辰大海
- 建立高效人际关系的五大方法
- Military Phonetic Alphabet
- C文件