重庆网站公司设计方案,教育培训网站建站,电影在线观看,.net 导航网站模板1.静态文件#xff1a;
项目中的CSS、图片、js都是静态文件 一般会将静态文件放到一个单独的目录中#xff0c;以方便管理 在html页面中调用时#xff0c;也需要指定静态文件的路径#xff0c;Django中提供了一种解析的方式配置静态文件路径 静态文件可以放在项目根目录下…1.静态文件
项目中的CSS、图片、js都是静态文件 一般会将静态文件放到一个单独的目录中以方便管理 在html页面中调用时也需要指定静态文件的路径Django中提供了一种解析的方式配置静态文件路径 静态文件可以放在项目根目录下也可以放在应用的目录下由于有些静态文件在项目中是通用的所以推荐放在项目的根目录下方便管理 1.在项目/settings.py文件中定义静态文件查找路径 STATIC_URL /static/ STATICFILES_DIRS [ os.path.join(BASE_DIR,static), ] 2.在项目根目录下创建static目录再创建img、css、js目录 3.在应用名称booktest/views.py中定义视图jingtai defjingtai(request): returnrender(request,booktest/jingtai.html)
4.在booktest/urls.py中配置url url(r^jingtai/$,views.jingtai),
5.在templates/booktest/下创建jingtai.html文件 动态配置 {%load static from staticfiles%} img src{%static img/sg.png %}/ 1.问题一django如何确定当前请求静态文件 http://127.0.0.1:8000/static/images/bjt.png 答请求路径/static/images/bjt.png中开始的部分/static/ 与settings.py中STATIC_URL进行对比如果相同则认为是静态文件 2. 问题二在磁盘的哪个目录下找静态文件 答判断后剩下路径images/bjt.png 方案一与settings.py中的STATICFILES_DIRS进行拼接 方案二在应用目录下的static目录下查找 2.中间件
Django中的中间件是一个轻量级、底层的插件系统可以介入Django的请求和响应处理过程修改Django的输入或输出 中间件的设计为开发者提供了一种无侵入式的开发方式增强了Django框架的健壮性其它的MVC框架也有这个功能名称为IoC Django在中间件中常用方法不同的阶段执行
process_request
process_view process_response 1.问题一什么时候使用中间件 答当大部分的视图中都需要执行一段相同代码时 2.问题二怎么用 答定义类选择函数安装 3.问题三使用哪个函数呢 答根据代码的执行时间来判断 3.Admin站点
内容发布的部分由网站的管理员负责查看、添加、修改、删除数据开发这些重复的功能是一件单调乏味、缺乏创造力的工作为此Django能够根据定义的模型类自动地生成管理模块 在Django项目中默认启用Admin管理站点 1.准备工作创建管理员的用户名和密码 python manage.pycreatesuperuser 2.按提示填写用户名、邮箱、密码 3.使用在应用的admin.py中注册模型类 fromdjango.contrib import admin from models import * admin.site.register(AreaInfo)
4.输入如下网址 http://127.0.0.1:8000/admin/
5.按提示填写用户名、密码点击“Log in”按钮登录 管理类有两种使用方式
1.注册参数打开booktest/admin.py文件注册模型类代码如下 admin.site.register(AreaInfo,AreaAdmin)
2.装饰器打开booktest/admin.py文件在管理类上注册模型类代码如下 admin.register(AreaInfo) class AreaAdmin(admin.ModelAdmin): pass 列表页选项 页大小
每页中显示多少条数据默认为每页显示100条数据属性如下 list_per_page100 “操作选项”的位置
顶部显示的属性设置为True在顶部显示设置为False不在顶部显示默认为True actions_on_topTrue 列表中的列
属性如下
list_display[模型字段1,模型字段2,...] 将方法作为列
列可以是模型字段还可以是模型方法要求方法有返回值 打开booktest/models.py文件修改AreaInfo类如下 classAreaInfo(models.Model): ... def title(self): return self.atitle
打开booktest/admin.py文件修改AreaAdmin类如下 classAreaAdmin(admin.ModelAdmin): ... list_display [id,atitle,title] 方法列是不能排序的如果需要排序需要为方法指定排序依据
admin_order_field模型类字段 列标题
列标题默认为属性或方法的名称可以通过属性设置 需要先将模型字段封装成方法再对方法使用这个属性模型字段不能直接使用这个属性
short_description列标题 关联对象
无法直接访问关联对象的属性或方法可以在模型类中封装方法访问关联对象的成员 打开booktest/models.py文件修改AreaInfo类如下
classAreaInfo(models.Model): ... def parent(self): return self.aParent.atitle parent.short_description父级区域名称 右侧栏过滤器
属性如下只能接收字段会将对应字段的值列出来用于快速过滤 list_filter[] 搜索框
属性如下用于对指定字段的值进行搜索支持模糊查询 search_fields[] 中文标题
打开booktest/models.py文件修改模型类为属性指定verbose_name参数即第一个参数
classAreaInfo(models.Model): atitlemodels.CharField(标题,max_length30)#名称 编辑页选项 显示字段顺序
属性如下 fields[] 分组显示
属性如下
fieldset( (组1标题,{fields:(字段1,字段2)}), (组2标题,{fields:(字段3,字段4)}), ) 关联对象
在一对多的关系中可以在一端的编辑页面中编辑多端的对象嵌入多端对象的方式包括表格、块两种 类型InlineModelAdmin表示在模型的编辑页面嵌入关联模型的编辑 子类TabularInline以表格的形式嵌入 子类StackedInline以块的形式嵌入 打开booktest/admin.py文件创建AreaStackedInline类
classAreaStackedInline(admin.StackedInline): model AreaInfo#关联子对象 extra 2#额外编辑2个子对象 重写模板
在templates/目录下创建admin目录
打开当前虚拟环境中Django的目录再向下找到admin的模板 将需要更改文件拷贝到第一步建好的目录里编辑文件 4.上传图片
在Django中上传图片包括两种方式
1.在管理页面admin中上传图片 2.自定义form表单中上传图片
上传图片后将图片存储在服务器上然后将图片的路径存储在表中 在管理页面admin中上传图片 注册admin.site.register(PicTest) 自定义form表单中上传图片 1.打开booktest/views.py文件创建视图
2.打开booktest/urls.py文件配置url 3.在templates/booktest/目录下创建模板pic_upload.html 注在模板中定义上传表单要求如下 form的属性enctypemultipart/form-data form的method为post input的类型为file 5.分页
Django提供了数据分页的类这些类被定义在django/core/paginator.py中 对象Paginator用于对列进行一页n条数据的分页运算 对象Page用于表示第m页的数据 Paginator对象
方法init(列表,int)返回分页对象参数为列表数据每面数据的条数 属性count返回对象总数 属性num_pages返回页面总数 属性page_range返回页码列表从1开始例如[1, 2, 3, 4] 方法page(m)返回Page对象表示第m页的数据下标以1开始 Page对象
调用Paginator对象的page()方法返回Page对象不需要手动构造 属性object_list返回当前页对象的列表 属性number返回当前是第几页从1开始 属性paginator当前页对应的Paginator对象 方法has_next()如果有下一页返回True 方法has_previous()如果有上一页返回True 方法len()返回当前页面对象的个数 迭代页面对象访问当前页面中的每个对象