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

需要配置的课程机构页面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

  • 授课机构
  • {% 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 %}
    
    {% endblock %}
    

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

    你可能感兴趣的:(28.urls用include分类、modelform提交我要学习咨询)