1.静态文件:
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%}
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.中间件
1.问题一:什么时候使用中间件?
答:当大部分的视图中都需要执行一段相同代码时
2.问题二:怎么用?
答:定义类,选择函数,安装
3.问题三:使用哪个函数呢?
答:根据代码的执行时间来判断
3.Admin站点
1.准备工作:创建管理员的用户名和密码:
python manage.pycreatesuperuser
fromdjango.contrib import admin
from models import *
admin.site.register(AreaInfo)
http://127.0.0.1:8000/admin/
管理类有两种使用方式
admin.site.register(AreaInfo,AreaAdmin)
@admin.register(AreaInfo)
class AreaAdmin(admin.ModelAdmin):
pass
列表页选项
页大小
list_per_page=100
“操作选项”的位置
actions_on_top=True
列表中的列
list_display=[模型字段1,模型字段2,...]
将方法作为列
classAreaInfo(models.Model):
...
def title(self):
return self.atitle
classAreaAdmin(admin.ModelAdmin):
...
list_display = ['id','atitle','title']
admin_order_field=模型类字段
列标题
short_description='列标题'
关联对象
classAreaInfo(models.Model):
...
def parent(self):
return self.aParent.atitle
parent.short_description='父级区域名称'
右侧栏过滤器
list_filter=[]
搜索框
search_fields=[]
中文标题
classAreaInfo(models.Model):
atitle=models.CharField('标题',max_length=30)#名称
编辑页选项
显示字段顺序
fields=[]
分组显示
fieldset=(
('组1标题',{'fields':('字段1','字段2')}),
('组2标题',{'fields':('字段3','字段4')}),
)
关联对象
classAreaStackedInline(admin.StackedInline):
model = AreaInfo#关联子对象
extra = 2#额外编辑2个子对象
重写模板
4.上传图片
在管理页面admin中上传图片
注册:admin.site.register(PicTest)
自定义form表单中上传图片
1.打开booktest/views.py文件,创建视图
5.分页
Paginator对象
Page对象