关于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 }}"/>

就能显示图片了。


最新文章

  1. SQL Server 批量删除存储过程
  2. js脚本语言
  3. openwrt-智能路由器hack技术(1)---&quot;DNS劫持&quot;
  4. android 模拟抢红包 原理
  5. IOS 设置定时器
  6. C#中 Thread.Sleep精度问题
  7. JAVA之装饰者模式
  8. javascript中的函数返回值(return)
  9. iOS正则表达式的使用
  10. Zombie.js Insanely fast, headless full-stack testing using Node.js
  11. 关于Dictionary字典和List列表
  12. MySQL服务读取参数文件my.cnf的规律研究探索
  13. 听翁恺老师mooc笔记(8)--字符串2
  14. Oracle查询所有表的字段明细
  15. 包建强的培训课程(13):iOS与ReactNative
  16. iOS SDK 从配置文件里读SDK。转化成class 可同时加载多个SDK
  17. mysql数据类型及存储过程
  18. localStorage跟cookie的使用
  19. React的安装方法
  20. [Real World Haskell翻译]第21章 使用数据库

热门文章

  1. CentOS 7 64位虚拟机安装过程
  2. 進階gdb之core dump的除錯
  3. connect failed: 127.0.0.1#953: connection refused
  4. Android Service完全解析(上)
  5. 关于Ring3层的注册表监控
  6. Spring事务管理-传播行为-隔离级别
  7. 控制台Cannot read property &#39;disabled&#39; of null报错的问题
  8. JS判断浏览器类型的方法总结(IE firefox chrome opera safari)
  9. UnixBench算分介绍
  10. GERALD07加强版题解