(四)Django 在线平台(通过model form实现页面ajax 提交功能)
url分发配置:
url会越来越多所以需要在各自的APP中编写urls方便管理
在项目urls中配置课程机构的url
新建urls
配置前端页面跳转 此处就是urls中的namespace命名空间的作用
前端页面我要学习功能实现
在organization中新建forms.py
# !/usr/bin/env python # -*- coding:utf-8 -*- __author__ = '_X.xx_' __date__ = '2018/6/9 18:52' from django import forms from operation.models import UserAsk import re class UserAskForm(forms.ModelForm): class Meta: model = UserAsk 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(u"手机号码非法", code="mobile_invalid")
在view视图函数中编写
class AddUserAskView(View): """ 前端页面我要学习功能 """ def post(self, request): userask_form = UserAskForm(request.POST) if userask_form.is_valid(): user_ask = userask_form.save(commit=True) return HttpResponse('{"status":"success"}', content_type='application/json') else: return HttpResponse('{"status":"fail", "msg":"添加出错"}', content_type='application/json')
在org-list.html页面中编写Js
{% block custom_js %} <script> $(function(){ $('#jsStayBtn').on('click', function(){ $.ajax({ cache: false, type: "POST", url:"{% url "org:add_ask" %}", data:$('#jsStayForm').serialize(), async: true, success: function(data) { if(data.status == 'success'){ $('#jsStayForm')[0].reset(); alert("提交成功") }else if(data.status == 'fail'){ $('#jsCompanyTips').html(data.msg) } }, }); }); }) </script> {% endblock %}
提交正确数据会存储到数据库