15Django实战第15天:我要学习咨询

Posted 何波安的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15Django实战第15天:我要学习咨询相关的知识,希望对你有一定的参考价值。

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

我们在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\')

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

 

 

以上是关于15Django实战第15天:我要学习咨询的主要内容,如果未能解决你的问题,请参考以下文章

机器学习实战第15章 大数据与MapReduce

第81题JAVA高级技术-多线程15(CompletableFuture实战)

第81题JAVA高级技术-多线程15(CompletableFuture实战)

100天精通Oracle-实战系列(第15天)使用 RMAN 备份异机恢复 Oracle 数据库

实战篇:SUSE 15 SP3 安装 Oracle 19C RAC 数据库

实战篇:SUSE 15 SP3 安装 Oracle 19C RAC 数据库