美文网首页
28.urls用include分类、modelform提交我要学

28.urls用include分类、modelform提交我要学

作者: hs_a2d1 | 来源:发表于2018-02-01 20:09 被阅读0次

    需要配置的课程机构页面url比较多,可以在app目录下创建urls,把需要配置的url写在里面,根目录urls里只写一行,把app的url给include进来。在organnization文件夹里创建urls.py,

    from django.conf.urls import url, include
    from .views import OrgView
    
    
    urlpatterns = [
        #课程机构列表页
        url(r'^list/$', OrgView.as_view(), name="org_list"),
        url(r'^add_ask/$', OrgView.as_view(), name="org_list"),
    ]
    

    再在根目录urls.py里

    from django.conf.urls import url, include
    。。。。。。。。
    url(r'^org/', include('organization.urls',namespace="org")),
    

    这里在根目录下的url函数里输入了namespace="org",即命名空间,app的url函数都在这个空间里了。对应的url是:http://127.0.0.1:8000/org/list/
    http://127.0.0.1:8000/org/add_ask/凡是监测到http://127.0.0.1:8000/org/的请求就都交给app的urls.py处理。然后配置页面上边的超链接,用户点击“授课机构”就显示http://127.0.0.1:8000/org/list/
    base.py

    <li class="active" ><a href="{% url 'org:org_list' %}">授课机构</a></li>
    

    {% url '命名空间:url函数名' %}这个形式

    原来用户填表的功能需要在app目录下创建一个form.py,建立一个类继承forms.Form,然后在响应函数里实例化该form,传入request.POST。但是由于这次的form字段和model的UserAsk表基本完全一样,可以不重新创建个form把字段再写一遍了。在organization文件夹里创建forms.py

    from django import forms
    from operation.models import UserAsk
    
    class UserAskForm(forms.ModelForm):
        class Meta:
            model = UserAsk
            fields = ['name','mobile','course_name']
    

    继承forms.ModelForm类,class Meta下的代码意思是继承UserAsk的model,但只要['name','mobile','course_name']这3个字段。
    在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():
                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')
    

    不需要实例化form,把request.POST的值保存到form的每个字段再save()。只需要user_ask = userask_form.save(commit=True)
    commit=True的意思就是保存到数据库。
    前端点击提交后不应该刷新页面,只是json的变化。需要懂json和ajax

    {% 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 %}
    

    这样在前端输入数据提交后就保存到数据库的表里了。

    相关文章

      网友评论

          本文标题:28.urls用include分类、modelform提交我要学

          本文链接:https://www.haomeiwen.com/subject/lewlzxtx.html