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

何波安的博客 何波安的博客     2022-10-21     327

关键词:

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

我们在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]\\d9$|^147\\d8$|^176\\d8$"
        p = re.compile(REGEX_MOBILE)
        if p.match(mobile):
            return mobile
        else:
            raise forms.ValidationError(\'手机号非法\', code=\'mobile_invalid\')

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

 

 

java学习第15天(linklistvector)

根据集合的分类(上一天有说),首先接触的是ArrayList但是和Collection一样,他没有什么特殊的功能,直接跳过,然后是Vector. 一 Vector A:有特有功能 a:添加 publicvoidaddElement(Eobj) -- add() b:获取 publicEelementAt(intindex) --... 查看详情

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

回城传送–》《JAVA筑基100例》文章目录零、前言一、题目描述二、解题思路三、代码详解四、推荐专栏五、示例源码下载零、前言​今天是学习JAVA语言打卡的第81天,每天我会提供一篇文章供群成员阅读(不需要订阅付钱),... 查看详情

java学习第15天(补充可变参数)

如果我们在写方法的时候,参数个数不明确,就应该定义可变参数。 格式: 修饰符返回值类型方法名(数据类型...变量){} 注意: A:该变量其实是一个数组名 B:如果一个方法有多个参数,并且有可变参数,可变参数必须... 查看详情

100天精通oracle-实战系列(第15天)使用rman备份异机恢复oracle数据库(代码片段)

使用RMAN备份异机恢复Oracle数据库(第15天)->返回总目录<-虽说备份是Oracle数据库安全的最后保障,但是前提是会用备份恢复出数据,否则备份也就形同虚设了。前面讲了3种方式备份Oracle数据库,所以现在已经有了备份,接... 查看详情

第15天sql进阶-查询优化-慢查询日志(sql小虚竹)

...慢查询日志是什么如何开启慢查询日志第一种方式windows实战slow_query_log一直为off,没生效验证linux实战验证第二种方式实操验证关闭慢查询日志第一种方式 查看详情

深度学习100例-卷积神经网络(cnn)实现车牌识别|第15天

...数2.加载数据3.配置数据三、搭建网络模型四、设置动态学习率五、编译六、训练七、模型评估八、保存和加载模型九、预测一、前期工作 查看详情

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

回城传送–》《JAVA筑基100例》文章目录零、前言一、题目描述二、解题思路三、代码详解四、推荐专栏五、示例源码下载零、前言​今天是学习JAVA语言打卡的第81天,每天我会提供一篇文章供群成员阅读(不需要订阅付... 查看详情

django学习第82天django多表查询(代码片段)

一.数据库表的创建fromapp01importmodels#多对多关系的字段无法直接添加,系统会自动创建第三表,需要在第三张表中添加(书和作者),一对一和一对多都一样#models.Book.objects.create(name=‘西游记‘,price=88,publish_date=‘2018-09-12‘,publish_id=1)#mo... 查看详情

13django实战第13天:分页列表功能

我们看课程机构列表页是需要分页的为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-paginationworkonmxonlinepipinstalldjango-pure-pagination   查看详情

大三上寒假15天--第11天(代码片段)

今天继续学习webmagic爬虫通过老师给的学习资料学习后,对webmagic爬虫基本有了了解,当时对site方法有点模糊,今天也终于搞明白了,感觉就像模拟了一个用户一样,对一个网站的框架还是不是很了解,所以还是不太理解,那些c... 查看详情

22django实战第22天:课程评论

1、编辑course-comment.html2、编辑courses.views.pyclassCourseCommentView(LoginRequiredMixin,View):defget(self,request,course_id):course=Course.objects.get(id=course_id)returnrender(request,‘course-comment.ht 查看详情

17django实战第17天:机构详情展示

1、进入xadmin添加测试数据(教师、课程)2、把以下4个前端页面复制到templates中先打开这几个页面分析,它们和之前的课程机构列表页是不一样的机构,且没有共同的部分,但是这4个页面却是类似的  查看详情

29django实战第29天:修改密码和头像

修改头像1、上传头像,我们需要的对它做一个forms验证,编辑users.forms.py...from.modelsimportUserProfileclassUploadImageForm(forms.ModelForm):classMeta:model=UserProfilefields=[‘image‘]2、编辑users.views.pyclassUploadImageView(Logi 查看详情

24django实战第24天:讲师列表页

1、复制teracher-list.html到templates目录下2、编辑teacher-list.html,继承base模板3、编辑organization.views.py...from.modelsimportTeacherclassTeacherListView(View):defget(self,request):all_teachers=Teacher.objects.all()r 查看详情

26django实战第26天:配置全局导航

1、编辑index.html,继承base.html2、编辑base.html,根据是否登录不同显示 问题:当我们选中一个导航,选中样式并没有成为选中的状态因此我们编辑base.html对导航中进行判断 然后我们可以用同样的方式来判断授课讲师我们先... 查看详情

30django实战第30天:修改邮箱和用户信息

修改个人邮箱需要完成两个接口,一个是获取验证码,一个是新的邮箱和验证码是否匹配1、编辑users.views.pyclassSendEmailCodeView(LoginRequiredMixin,View):defget(self,request):email=request.GET.get(‘email‘,‘‘)ifUserProfile.objects.filter(email=email) 查看详情

28django实战第28天:个人信息展示

从今天开始,我来完成个人中心部分,前端页面如下1、浏览这些页面可以发现,它们和base.html是有区别的,因此,它们需要新建一个模板usercenter-base.html2、把usercenter-info.html的内容拷贝到usercenter-base.html,用block把会不同的部分... 查看详情

学成在线(第15天)(代码片段)

学习页面查询课程计划到目前为止,我们已可以编辑课程计划信息并上传课程视频,下一步我们要实现在线学习页面动态读取章节对应的视频并进行播放。在线学习页面所需要的信息有两类:一类是课程计划信息、一类是课程学... 查看详情