美文网首页
Django表单使用介绍

Django表单使用介绍

作者: 我的袜子都是洞 | 来源:发表于2018-11-19 19:40 被阅读26次

    Django版本:2.1.3
    Django表单非常强大,熟悉后可以大大提高工作效率。

    Django表单分为两种使用方法:

    • GET
    • POST

    GET方法:直接明文显示在URL中(如:https://docs.djangoproject.com/search/?q=forms&release=1),通过URL处理数据,GET方法可以用来直接保存书签、分享或重新提交,但由于明文显示,故而数据不安全。

    POST方法:浏览器会封装编码数据,进行传输,而且POST方法比GET方法传输内容支持更大。

    Django中使用GET方法:

    非常简单,举个栗子,访问url:http://127.0.0.1:8000/form/get_method/?a=21313&b=2323,读取url中的GFT方法提供的a,b的数据。关键代码如下:

    urls.py

    from django.urls import path 
    from . import views
    urlpatterns = [   
        path('get_method/', views.get_method ),
    ]
    

    views.py

    from django.http import HttpResponse
    def get_method(request):
        if request.method == 'GET':
            get_values = request.GET 
            a = get_values['a']
            b = get_values['b']
            str = "a value="+a+"<br/>b vlaue="+b
            return HttpResponse(str)
    

    判断是不是GET方法,然后读取GET的数据,像字典一样读值,非常简单吧!


    GET方法效果

    Django中使用POST方法:

    POST方法是重点,需要理解和用的东西很多。
    Django会处理涉及表单的三个不同部分:

    • 准备并重组数据,以便下一步的渲染
    • 为数据创建HTML 表单
    • 接收并处理客户端提交的表单及数据

    Django表单系统的核心组件是 Form类。它与Django模型描述对象的逻辑结构、行为以及它呈现给我们内容的形式的方式大致相同,Form 类描述一张表单并决定它如何工作及呈现。

    再举个栗子,构建表单来获取用户的姓名:
    在工程中新建forms.py文件:

    from django import forms 
    class NameForm(forms.Form):
        # name字段,我们要获取的字段
        name = forms.CharField(label='姓名', max_length=100)
    

    视图views.py文件:

    from django.shortcuts import render
    from django.http import HttpResponseRedirect,HttpResponse
    from .forms import NameForm 
    
    def get_name(request):
        if request.method == "POST":
            form = NameForm(request.POST)
            # is_valid():字段验证通过为True
            if form.is_valid():
                return HttpResponseRedirect('/thanks/')
        else:
            form = NameForm()
        return render(request,  'form_test/name.html' ,{'form': form})
    

    模板name.html文件:

    <form action="/get_name/" method="post">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="提交姓名" />
    </form>
    

    效果如图:

    获取姓名表单 效果图
    HTML代码中的tr标签里所有部分都是Form类帮助我们生成的:
    <form action="/get_name/" method="post">
        <input type="hidden" name="csrfmiddlewaretoken" value="9mHZLHznXhfJTtRiUYRhVy9wyKC9gxH0QN17jzTNW70LLQYLqQxH86CZvqh5Q6sC">
        <tr>
            <th>
                <label for="id_name">姓名:</label></th><td><input type="text" name="name" maxlength="100" required id="id_name">
            </td>
        </tr>
        <input type="submit" value="提交姓名" />
    </form>
    

    Form中除了CharField字段类型还有很多实用的类型:

    • ChoiceField
      字符串
    • ChoiceField
    • TypedChoiceField
    • DateField
      日期
    • DateTimeField
      日期+时间
    • DecimalField
    • DurationField
    • EmailField
      电子邮件类型
    • FileField
      文件类型
    • FilePathField
      文件路径
    • FloatField
    • ImageField
    • IntegerField
    • GenericIPAddressField
    • MultipleChoiceField
    • TypedMultipleChoiceField
    • NullBooleanField
    • RegexField
    • SlugField
    • TimeField
    • URLField
    • UUIDField
    • MultiValueField
    • SplitDateTimeField

    相关文章

      网友评论

          本文标题:Django表单使用介绍

          本文链接:https://www.haomeiwen.com/subject/bceafqtx.html