Django(十四)课程机构列表页数据展示,Django的modelform,关于urls的重新分发
Posted 爬行的龟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django(十四)课程机构列表页数据展示,Django的modelform,关于urls的重新分发相关的知识,希望对你有一定的参考价值。
关于urls的重新分发:
如果所有url都配置在根路径的urls.py里,会特别多,而且也不易于修改,Django框架里支持urls的重新分发:
1、在根路径的urls配置上:
PS:namespace是定义命名空间,比如下面这种配置,
urlpatterns = [ #课程机构url配置,验证码,每个app可以书写自己的url,然后通过include进来 url(r\'^org/\', include(\'oraganization.urls\',namespace="org")), ]
2、在app应用:oraganization下创建urls.py文件
这个文件的结构和根路径的urls配置一样,只不过里面存放的都是这个app的url
#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = "BIGNI" __date__ = "2017/4/2 14:35" from django.conf.urls import url,include from .views import OrgView,AddUserAskView,OrgHomeView,OrgCourseView,OrgDescView,OrgTeaView urlpatterns = [ # 课程机构首页 url(r\'^list/$\', OrgView.as_view(), name="org_list"), url(r\'^add_ask/$\',AddUserAskView.as_view(),name="add_ask"), url(r\'^home/(?P<org_id>\\d+)/$\',OrgHomeView.as_view(),name="org_home"), url(r\'^course/(?P<org_id>\\d+)/$\',OrgCourseView.as_view(),name="org_course"), url(r\'^desc/(?P<org_id>\\d+)/$\',OrgDescView.as_view(),name="org_desc"), url(r\'^teacher/(?P<org_id>\\d+)/$\',OrgTeaView.as_view(),name="org_tea"), #机构收藏 url(r\'^add_ask/$\',AddUserAskView.as_view(),name="add_ask"), ]
Django的modelform和form:
Django中内置了Form和Model两个类,有时候页面的表单form类与Model类是一一对应,因此分别定义Form类和Model类会比较麻烦,最简单的方式就是通过Model来生成一个Form类,Django内置的ModelForm就是为此而生的。
#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = "BIGNI" __date__ = "2017/4/2 12:10" import re from django import forms from operation.models import UserAsk #继承modelform class UserAskForm(forms.ModelForm): #也可以添加自己所需的字段 # my_field = forms.CharField() class Meta: #指定model model = UserAsk #指定需要model的那些字段 fields = [\'name\',\'mobile\',\'course_name\'] #s手机号码是有要求的,可以通过定义下面方法,必须是clean开头,这样初始化时会自动调用这个方法 def clean_mobile(self): """ 验证手机是否合法 """ #modelform内置方法cleaned_data获取到mobile的value mobile = self.cleaned_data[\'mobile\'] REGEX_MOBILE = "^1\\d{10}$" p = re.compile(REGEX_MOBILE) if p.match(mobile): return mobile else: raise forms.ValidationError("手机号码非法",code="mobile_invalid")
数据的展示可以通过从后台取数据,然后通过模板语言在前端html展示,其中关于图片的展示需要注意,因为存储在数据库的关于
图片的字段,是图片在项目里的相对路径,要在前端展示图片,需要配置setting和urls文件:
model里图片字段这么配置:
image = models.ImageField(upload_to="org/%Y/%m",verbose_name="封面图",max_length=100)
数据表里是这么存储:
在setting文件配置里加上下面的,告诉Django文件的路径:
#配置资源文件的上传路径。比如图片
MEDIR_URL = \'/media/\'
MEDIA_ROOT = os.path.join(BASE_DIR,\'media\')
在context_processors里加上django.core.context_processors.media ,作用是在前端页面配置路径是可以通过MEDIR_URL代替
\'/media/\'
在urls文件里配置:
导入setting文件里的MEDIR_ROOT 绝对路径
from .settings import MEDIA_ROOT
在urlpatterns里加上:
#配置上传文件的访问处理函数
url(r\'^media/(?P<path>.*)$\',serve,{"document_root":MEDIA_ROOT})
然后data-url属性如下配置
<img width="200" height="120" class="scrollLoading" data-url="{{MEDIR_URL}}{{ course_org.image }}"/>
就能显示图片了。
以上是关于Django(十四)课程机构列表页数据展示,Django的modelform,关于urls的重新分发的主要内容,如果未能解决你的问题,请参考以下文章