今天完成的是课程机构列表页面的最后一个模块:我要学习

我们在models中创建对应的表时UserAsk。之前我们讲过:在做表单的时候,我们可以通过forms先对提交的数据做验证,之前我们使用的是Form,当一张表里面的字段比较多,我们可以采用Model.Form

在organizations下面新建forms.py

class UserAskForm(forms.ModelForm):
class Meta:
model = UserAsk
#我们可以指定model里那些字段,比如说add_time我们就不需要
fields = ['name', 'mobile', 'course_name']

后台逻辑:编辑organization.views.py

...
from django.http import HttpResponse
from .forms import UserAskForm class AddUserAskView(View):
def post(self, request):
userask_form = UserAskForm(request.POST)
if userask_form.is_valid():
userask_form.save(commit=True)
return HttpResponse('{"status":"success"}', content_type='application/json')
else:
return HttpResponse('{"status":"fail", "msg":"添加出错"}', content_type='application/json')

配置一条url,编辑urls.py

...
from organization.views import AddUserAskView urlpatterns = [
...
url(r'^add_ask/$', AddUserAskView.as_view(), name='add_ask'), ]

前端部分:编辑org-list.html,把base.html底部的js剪切放入到{% block custom_js%}中

然后对这个js进行修改

表单那边添加{% csrf_token %}

现在访问这个页面测试功能是OK,但是还存在一个问题,就是我们输入任意的手机号码,也可以提交成功,一般我们都会对手机用正则做匹配,编辑organization.forms.py

from django import forms
from operation.models import UserAsk
import re class UserAskForm(forms.ModelForm):
class Meta:
model = UserAsk
#我们可以指定model里那些字段,比如说add_time我们就不需要
fields = ['name', 'mobile', 'course_name'] def clean_mobile(self):
mobile = self.cleaned_data['mobile']
REGEX_MOBILE = "^1[358]\d{9}$|^147\d{8}$|^176\d{8}$"
p = re.compile(REGEX_MOBILE)
if p.match(mobile):
return mobile
else:
raise forms.ValidationError('手机号非法', code='mobile_invalid')

最后我们打个断点测试,故意输入不符合要求的手机号

 

15、Django实战第15天:我要学习咨询的更多相关文章

  1. Django实战(15):Django实现RESTful web service

    曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style).所以我们的选择变得很简单:前端ajax访问后端的RESTful w ...

  2. [python] python django web 开发 —— 15分钟送到会用(只能送你到这了)

    1.安装python环境 1.1 安装python包管理器: wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py   1. ...

  3. 从零开始部署Django生产环境(适用:《跟老齐学Python Django实战》)

    <跟老齐学Python Django实战>作为市面上少有的Django通俗实战书籍,给了我学习Django很大的帮助.作为一名新入门的菜鸟,全书我重复练习了至少三遍,每次都有新的收获. 前 ...

  4. Django【第15篇】:Django之Form组件归类

    Form组件归类 一.Form类 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; 1.Django内置字段如下: 1 Field 2 r ...

  5. 15.django之Django-Rest-Framework

    1.首先安装Django-Rest-Framework pip3 install djangorestframework pip3 install markdown Markdown为可视化 API ...

  6. django 学习-15 .Django文件上传(用户注册)

    1.vim blog/views.py from django.shortcuts  import  render_to_responsefrom django.http   import HttpR ...

  7. 15 Django组件-中间件

    中间件 中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好 ...

  8. 15.Django添加一个功能模块的步骤(和SpringMVC类比)

    这里介绍如何在Django里新建一个模块,这个例子还是最简单的例子 通过浏览器访问 http://localhost:8000/hello/然后返回一个欢迎页 我是做java web出身的,这里用py ...

  9. 15.Django基础十一之认证系统

    一 auth模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个 ...

随机推荐

  1. 洛谷 P1379 八数码难题 解题报告

    P1379 八数码难题 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初 ...

  2. 【NOIP 模拟赛】中值滤波 打表找规律

    对于这样看起来不像什么算法也没什么知识点的题,一脸懵逼的话不是手推规律就是打表找规律......... 当然还有一些超出你能力之外的数学题...... #include <cstdio> ...

  3. JUnit4.11 理论机制 @Theory 完整解读

    最近在研究JUnit4,大部分基础技术都是通过百度和JUnit的官方wiki学习的,目前最新的发布版本是4.11,结合代码实践,发现官方wiki的内容或多或少没有更新,Theory理论机制章节情况尤为 ...

  4. 团队代码中Bug太多怎么办?怎样稳步提高团队的代码质量

    最近负责的Android APP项目,由于团队成员变动.界面改版导致代码大幅修改等原因,产品发布后屡屡出现BUG导致的程序崩溃. 经过对异常统计和代码走读,BUG主要集中在空指针引起的NullPoin ...

  5. Extend the size of ext3 partition online in VM

    1. Increase disk space in vCenter 2. scan disk on the Linux VM # fdisk -lu > /tmp/fdisk. # > / ...

  6. php 上传csv文件

    php fgetcsv()函数 定义和用法 fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段. 与 fgets() 类似,不同的是 fgetcsv() 解析读入的行并找出 CSV 格式 ...

  7. P值

    https://baike.baidu.com/item/P%E5%80%BC/7083622?fr=aladdin https://baijiahao.baidu.com/s?id=15960976 ...

  8. Spring学习--通过注解配置 Bean (三)

    组件装配: <context:component-sacan> 元素还会自动注册 AutowiredAnnotationBeanPostProcesser 实例 , 该实例可以自动装配具有 ...

  9. Linux下设置防火墙(开启端口)

    1.修改文件/etc/sysconfig/iptables 在文件中加入如下内容,目的是对外界开放7001端口 -A RH-Firewall-1-INPUT -m state --state NEW ...

  10. bzoj1862: [Zjoi2006]GameZ游戏排名系统

    Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家的名次相同时 ...