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

就能显示图片了。

				
时间: 2024-10-11 14:34:48

Django(十四)课程机构列表页数据展示,Django的modelform,关于urls的重新分发的相关文章

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次

安卓实训第十四天---使用ContentProvider共享数据,并且利用ContentResolver监听共享数据

ContentProvider: 一.当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的好处是统一了数据访问方式. 第二步需要在AndroidManif

[py][mx]django添加后台课程机构页数据-图片上传设置

分析下课程页前台部分 机构类别-目前机构库中没有这个字段,需要追加下 所在地区 xadmin可以手动添加 课程机构 涉及到机构封面图, 即图片上传media设置, 也需要在xadmin里手动添加几条 用xadmin添加数据 所在地区添加 课程机构添加 补充机构类别在model里的字段 class CourseOrg(models.Model): catagory = models.CharField(max_length=20, default="pxjg", choices=((&q

性能测试五十:Jmeter+Influxdb+Grafana实时数据展示系统搭建

上Grafana官网下载Grafana,此产品只有64位的版本,没有32位的 Influxdb:InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便.上官网下载 因为jmeter要往infuxdb里面写数据,所以最好把这两个放在一台机器上,grafana只做展示infuxdb里面的数据,可以另外部署 jmeter实时数据展示系统

给ListView列表添加数据展示动画

给ListView的数据展示  做点动画效果,数据较多时,手指往上拉动数据时,下面的数据感觉是往上推的,直接上关键代码: ---------------------动画文件res/anim:--------------------------------- up_from_bottom.xml: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schema

第十四篇:获取系统数据文件信息

前言 在 Linux 中,系统数据文件大都不能直接用编辑的方式读取.如此设计一方面是从安全性考虑,另一方面则是从文件检索效率考虑.本文将以口令文件 passwd 为例讲解读取 Linux 中系统数据文件的方法. 基本步骤 1. 包含读写该系统数据文件的专用头文件 ( 如读写口令文件要包含 pwd.h 组文件则是 grp.h ) 2. 使用 set 函数打开文件        3. 使用 get 函数读取下一个记录        4. 使用 end 函数关闭此文件 另,如果数据文件支持某种形式的关

Android笔记(四十四) Android中的数据存储——SQLite(六)整合

实现注册.登录.注销账户 MainActivity.java package cn.lixyz.activity; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; im

织梦列表页数据重复解决方法

dede:list 列表调用出来的新闻,每一个都重复了两次,怎么解决? 解决方法 注意:以下操作,所有文档会被清空,栏目不会清空 后台-系统-SQL命令行工具-执行 TRUNCATE #@_addonarticle; TRUNCATE #@_arccache; TRUNCATE #@_arctiny; TRUNCATE #@_archives; 如果你的文档只有文章模型的话执行上面几行SQL就行了,如果还有其他模型,需要加上 TRUNCATE #@_其他模型附加表 例如下图 那就要加上这几句 T

第十四文件系统访问列表facl

文件系统访问列表: 如果有俩用户tom.jerry,其中一个用户(jerry)想要访问另外一个用户(tom)的文件需要怎么办呢? tom:tom, tom基本组jerry: other:r-- 之前学过chown 是更改属组,属组不过一般用户是不能进行更改的所以,引出“facl” FACL:全称:Filesystem Access Control List利用文件扩展保存额外的访问控制权限 jerry需要的权限是: rw- setfacl -m(x)-u(g) file 其中-m: 设定u:UI