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的重新分发的更多相关文章
- 12、Django实战第12天:课程机构列表页数据展示
今天完成的是课程机构列表页.... 1.启动服务,进入xadmin后,添加5个城市信息用作测试数据 2.添加课程机构,其中有一项要上传封面图的地方要注意 封面图上传路径是我们在models中设置好的 ...
- thinkphp5 列表页数据分页查询3-带搜索条件
先加载模板然后在前端HTML页面请求数据 /** * 加载列表页模板 * @author 冯广福 */ public function index() { LogWriteService::write ...
- python实现列表页数据的批量抓取练手练手的
python实现列表页数据的批量抓取,练手的,下回带分页的 #!/usr/bin/env python # coding=utf-8 import requests from bs4 import B ...
- (生鲜项目)06. django的view实现商品列表页
使用原始的django的View来返回json格式的商品列表 目的是回顾一些django的基础知识, 好与后面的RESTful做对比 goods.views_base.py from django.v ...
- Vue3学习(七)之 列表界面数据展示
一.前言 昨晚可能是因为更新完文章后,导致过于兴奋睡不着(写代码确实太容易让人兴奋了),结果两点多才睡着,大东北果然还是太冷了. 不知道是不是因为膝盖和脚都是冰凉的,所以才导致很晚才能入睡? 刚眯了一 ...
- [py][mx]django添加后台课程机构页数据-图片上传设置
分析下课程页前台部分 机构类别-目前机构库中没有这个字段,需要追加下 所在地区 xadmin可以手动添加 课程机构 涉及到机构封面图, 即图片上传media设置, 也需要在xadmin里手动添加几条 ...
- thinkphp5 列表页数据分页查询-带搜索条件
一.控制器部分 <?php namespace app\user\controller; use app\user\model\HelpCenterManual as HelpCenterMan ...
- thinkphp5 列表页数据分页查询2-带搜索条件
一.控制器部分 <?php namespace app\user\controller; use app\index\controller\Common; use app\user\model\ ...
- 性能测试五十:Jmeter+Influxdb+Grafana实时数据展示系统搭建
如果用生成jtl文件再分析结果的方式的话,每一次请求就会往jtl里面写一条数据,在进行长时间的稳定性测试的时候,特别是当TPS很高的时候,写入的数据会非常的大,这个时候等稳定性测试完成,再对jtl进行 ...
随机推荐
- 点读系列《流畅的python》
第1章 python数据模型 python的写法是由背后的魔法方法实现的,比如obj[key],解释器实际调用的是obj.__getitem__(key) 作者把魔法方法叫做双下方法,因为有两个下划线 ...
- 【纯净软件】三款照片EXIF信息删除软件 Clear Exif、JPEG & PNG Stripper、Easy Exif Delete 非专业横向对比
商业软件:需支付费用后方可使用. 共享软件:需支付费用,但可以先免费试用(有使用期限.功能限制). 免费软件:无需支付费用,无使用期限,无功能限制. 纯净软件:无广告.无联网行为的免费软件. 自由软件 ...
- shell编程:变量替换
定义变量:$ var_1="I love you, Do you love me" 输出变量:$ echo $var_1 打印结果:I love you, Do you love ...
- 知识点整理01- 引用对象被子方法赋值后不改变;CheckBox 取消选择不可用问题
1. Class 实体是引用类型,但传入方法时是null的情况在子方法中不论怎么赋值当 FirstService.SetPerson(person,ref tempMsg); 执行后Person都是n ...
- linux下nano命令大全
nano是一个字符终端的文本编辑器,有点像DOS下的editor程序.它比vi/vim要简单得多,比较适合Linux初学者使用.某些Linux发行版的默认编辑器就是nano. nano命令可以打开指定 ...
- linux网络配置 转
1.常用配置网络指令 (1) 配置eth0的IP地址, 同时激活该设备 1 sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up (2) 添 ...
- codeforces1156D 0-1-Tree 换根dp
题目传送门 题意: 给定一棵n个点的边权为0或1的树,一条合法的路径(x,y)(x≠y)满足,从x走到y,一旦经过边权为1的边,就不能再经过边权为0的边,求有多少边满足条件? 思路: 首先,这道题也可 ...
- mysql莫名报"unknown column ... in 'on clause'"
今天遇见个会诡异的问题 一个web程序本地调试的好好的,结果发布到服务器上程序就报错了,报"unknown column ... in 'on clause'",网上搜了下,说是m ...
- svn中的trunk,branch和tags(转)
转自:https://www.cnblogs.com/keyi/p/5953649.html 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我 ...
- Java虚拟机(一)
一.Java发展历程 Java之父,James Gosling博士 时间 事件 1991年4月 James Gosling博士领导的Green Project启动,java语言前身Oak启动 1995 ...