django-表单POST方法提交实现完整过程

1 进入虚拟环境

    workon h1                                                 

2 创建一个django项目test

   django-admin startproject test

3 创建一个应用booktest

 python manage.py startapp booktest

4 在应用下面设置视图函数,由于表单使用post方式提交,所以要定义2个视图函数,

因为一个视图用来处理url地址用来返回一个表单页面,另一个视图用来处理表单

提交后的响应结果.

views.py代码如下:

  # coding:utf-8
  from django.shortcuts import render

  # 函数postTest1用来匹配表单对应的url,匹配成功后返回一个表单页面

  def postTest1(request):
      return render(request, 'booktest/postTest1.html')

  # 函数postTest2用来处理表单提交后服务器响应的结果

     def postTest2(request):

          # user = request.POST.get('user')

          user = request.POST['user']

          pwd = request.POST['password']

          gender = request.POST['gender']

          hobby = request.POST.getlist('hobby')

          context = {'user':user, 'pwd':pwd, 'gender':gender, 'hobby':hobby}

          return render(request, 'booktest/postTest2.html', context)

5 配置URL

1 根级url配置,在settings.py里面发现

 ROOT_URLCONF = 'test.urls' 

 即根级url配置要在test包里面的urls.py进行配置

2 打开urls.py,在urlpatterns的值[]里面,添加以下代码

 url(r'^booktest/', include('booktest.urls')),

 url(r'^booktest/', include('booktest.urls')),

 2行代码的意思是,对url进行正则匹配(不包含域名端口和参数部分),如匹配到

 字符串booktest/,则进入到包booktest下面的urls.py继续往下匹配

3 在booktest应用下面的urls.py进行url匹配

 代码如下:

 from django.conf.urls import url
 import views
 urlpatterns = [

    url(r'^postTest1/$', views.postTest1),

    url(r'^postTest2/$', views.postTest2),

    ]

  url(r'^postTest1/$', views.postTest1), 代码意思是当字符串为postTest1时

  进行匹配成功,然后由视图里面的函数postTest1来处理

6 创建模板templates目录,在templates目录下面创建应用booktest,在booktest目录

下面创建2个模板postTest1.html和postTest2.html,

设置模板的路径 ‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)],

注释掉 # ‘django.middleware.csrf.CsrfViewMiddleware’,

postTest1.html代码如下:





 
    Title
 



    
用户名:
密码:
性别:
爱好: 散步 游泳 踢足球

模板postTest2.html内容如下,返回POST类字典对象里面的值




    
          Title
     

    
           用户名:{{user}} 
密码: {{pwd}}
性别: {{gender}}
爱好: {%for h in hobby%} {{h}} {%endfor%}

8 终端输入python manage.py runserver进行开发项目测试,分别输入

http://127.0.0.1:8000/booktest/postTest1进入表单页面

表单填写完后提交,则返回一个服务器响应的结果,即postTest2.html页面.

你可能感兴趣的:(django)