`
san_yun
  • 浏览: 2639661 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

django request和form

 
阅读更多

HttpRequest对象

包含当前请求URL的一些信息:

 

request.path 除域名以外的请求路径,以正斜杠开头 "/hello/"
request.get_host() 主机名(比如,通常所说的域名) "127.0.0.1:8000" or "www.example.com"
request.get_full_path() 请求路径,可能包含查询字符串 "/hello/?print=true"
request.is_secure() 如果通过HTTPS访问,则此方法返回True, 否则返回False True 或者 False

 

request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常是浏览器的名称和版本号)。

 

注意,因为 request.META 是一个普通的Python字典,因此当你试图访问一个不存在的键时,会触发一个KeyError异常。

 

# BAD!
def ua_display_bad(request):
    ua = request.META['HTTP_USER_AGENT']  # Might raise KeyError!
    return HttpResponse("Your browser is %s" % ua)
 

 

# GOOD (VERSION 2)
def ua_display_good2(request):
    ua = request.META.get('HTTP_USER_AGENT', 'unknown')
    return HttpResponse("Your browser is %s" % ua)
 

form对象

 

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField()
    email = forms.EmailField(required=False)
    message = forms.CharField()
 

把form打印出来

from mblog.forms import BlogForm

print BlogForm(None,None)

<tr><th><label for="id_content">描述:</label></th><td><input type="text" name="content" id="id_content" /></td></tr>
<tr><th><label for="id_tags">标签:</label></th><td><input type="text" name="tags" id="id_tags" /></td></tr>
<tr><th><label for="id_source_link">链接:</label></th><td><input type="text" name="source_link" id="id_source_link" /></td></tr>
<tr><th><label for="id_source_title">标题:</label></th><td><input type="text" name="source_title" id="id_source_title" /></td></tr>
<tr><th><label for="id_source">来源:</label></th><td><input type="text" name="source" id="id_source" /></td></tr>
<tr><th><label for="id_group">描述:</label></th><td><input type="text" name="group" id="id_group" /></td></tr>
<tr><th><label for="id_flag">标志:</label></th><td><input type="text" name="flag" id="id_flag" /></td></tr>
<tr><th><label for="id_image_src">抓取图片url:</label></th><td><input type="text" name="image_src" id="id_image_src" /></td></tr>
<tr><th><label for="id_photo_id">上传图片id:</label></th><td><input type="text" name="photo_id" id="id_photo_id" /></td></tr>
<tr><th><label for="id_album">图片:</label></th><td><input type="text" name="album" id="id_album" /></td></tr>
<tr><th><label for="id_syncpost">同步围脖标志:</label></th><td><input type="checkbox" name="syncpost" id="id_syncpost" /></td></tr>
<tr><th><label for="id_taobao_item">shopping:</label></th><td><input type="text" name="taobao_item" id="id_taobao_item" /></td></tr>

 

clean_方法

Django的form系统自动寻找匹配的函数方法,该方法名称以clean_ 开头,并以字段名称结束。 如果有这样的方法,它将在校验时被调用。例如:

class EditBlogForm(forms.Form):
    content = forms.CharField(label = u"描述", max_length = settings.MAX_MBLOG_LENGTH, required=False)
    blog = forms.IntegerField(label = u"分享")
    album = forms.IntegerField(label = u"图片", required=False)
    flag = forms.IntegerField(label = u"标志", required=False)
    group = forms.IntegerField(label = u"小组", required=False)

将对应:

 def clean_blog(self):
        blog_id = self.cleaned_data['blog']
        blog = None
        try:
            blog = Message.objects.get(id=blog_id)
        except Message.DoesNotExist:
            raise forms.ValidationError(u"编辑的分享不存在")
        return blog

 clean_blog() 方法将在blog 字段的默认校验逻辑执行之后被调用。因为字段数据已经被部分处理了,所以我们不必担心数据是否为空,直接从self.cleaned_data 中提取出来。

 

更多:http://djangobook.py3k.cn/2.0/chapter07/

 

 

分享到:
评论

相关推荐

    Django1.6_利用Form实现注册登录注销修改密码

    在Django框架中,Form是处理用户输入数据的重要工具,它简化了模型与视图之间的交互,使得数据验证和处理更加高效。本教程基于Django 1.6和Python 2.7.6,将详细介绍如何利用Form实现注册、登录、注销以及修改密码...

    Python关于 Django 的web- Form 表单验证

    在Python的Web开发框架Django中,Form表单验证是一个至关重要的部分,它允许开发者创建用户界面并确保从用户那里接收到的数据是...阅读"3.4 Django Form.pdf"这样的资料,将进一步深入理解Django表单验证的细节和实践。

    Django Form表单上传文件.zip

    在Django框架中,表单(Form)是处理用户数据的核心工具,特别是在处理文件上传时。本教程将深入探讨如何使用Django Forms来实现文件上传功能。 首先,我们需要了解Django Form的基本结构。在Django中,创建一个...

    Django前端模板及crispy form美化等

    ### Django前端模板及crispy form美化等 #### 一、引言 本文档作为对上一篇关于Django用户登录注册等内容的延续,主要聚焦于如何利用第三方库Crispy Forms来实现前端页面的美化与优化。对于初学者而言,掌握Django...

    Django 解决上传文件时,request.FILES为空的问题

    如上所示,`enctype="multipart/form-data"`使得浏览器能够将文件作为多部分数据发送,这样Django的`request.FILES`才能接收到上传的文件对象。如果忽略这个属性,文件数据将不会被正确处理,导致`request.FILES`为...

    Django之Form表单验证及Ajax验证方式汇总

    在Python的Web开发框架Django中,Form表单是处理用户输入数据的重要工具。它不仅提供了数据验证功能,还能帮助我们构建美观的HTML表单。本教程将详细讲解Django的Form表单验证以及如何结合Ajax实现无刷新验证。 ...

    Django forms表单 select下拉框的传值实例

    form = SignupForm(request.POST) if form.is_valid(): # form.cleaned_data 将包含用户提交的数据,包括选中的classInfo ID class_id = form.cleaned_data['classInfo'] # 这里可以进行进一步的数据处理和保存...

    django实现MODELFORM多文件上传范例

    在Django框架中,ModelForm是用于方便地创建基于模型(Model)的表单(Form)的一个工具。它简化了数据验证和模型实例的创建。本示例将讲解如何使用ModelForm来实现多文件上传的功能,这对于处理用户上传的多个文件...

    给django的FormWizard来点修改,使其支持上一步,下一步

    这个定制的`CustomWizardView`实例不仅提供了上一步功能,还保持了Django FormWizard的原有优点,如数据持久化和表单验证。这使得开发多步骤表单变得更加灵活和用户友好。通过这种方式,你可以根据项目需求,自定义...

    解决Django的request.POST获取不到内容的问题

    ### Django中request.POST的获取机制 Django框架内置了一个HttpRequest对象,它负责封装了HTTP请求的数据。开发者通常通过request.POST属性来获取表单数据。request.POST是一个QueryDict对象,它是一个专门用来处理...

    HTML的form表单和django的form表单

    HTML的form表单和Django的form表单是Web开发中的两种重要概念,它们在构建交互式用户界面中起着核心作用。HTML的form表单主要用于收集用户输入的数据,而Django的form表单则是一种更高级的抽象,用于处理这些数据的...

    django form

    ### Django Form 应用详解 #### 一、概述 Django 是一款用 Python 编写的高级 Web 开发框架,它遵循 MVC(Model-View-Controller)设计模式,旨在通过“ batteries included”(开箱即用)的方式简化 Web 开发过程...

    Django框架获取form表单数据方式总结

     Form表单提交数据时使用的是post方式,所以在后端接收参数的时候需要先判断请求方式为post时才能请求到数据  name = request.POST.get(‘name’)  password = request.POST.get(‘password’) Django中获取...

    jquery-django-form-源码.rar

    Django提供了一种声明式的方式来定义和处理表单,通过继承`forms.Form`或`forms.ModelForm`类,我们可以自定义字段、验证规则以及错误消息。例如: ```python from django import forms class UserForm(forms.Form...

    自定义Django Form中choicefield下拉菜单选取数据库内容实例

    在Django中,Form是处理用户输入数据的重要工具,它允许开发者自定义表单的结构、验证规则以及渲染方式。本篇文章将详细讲解如何在Django Form中自定义`ChoiceField`,使其下拉菜单的选项从数据库中动态获取。 首先...

    8. Django 表单与模型

    在Django框架中,表单和模型是两个非常重要的概念,它们构成了数据处理的核心部分。本文将深入探讨Django中的表单(Forms)和模型(Models),以及它们如何协同工作来构建高效、安全的Web应用。 ### Django模型...

    django layui表单加图片上传功能(Django,layui).zip

    form = ImageForm(request.POST, request.FILES) if form.is_valid(): image = form.save(commit=False) image.save() return redirect('success_url') else: form = ImageForm() return render(request, '...

    Python Web框架之Django框架Form组件用法详解

    在Python Web开发中,Django框架是一个非常强大的...通过这种方式,Django Form使得Web开发更加简洁和高效,同时确保了数据的安全性和一致性。了解并熟练使用Django Form,能大大提高你在Python Web开发中的生产力。

Global site tag (gtag.js) - Google Analytics