1)在一开始设计表类型结构时,有部分表字段定义的是文件或图片类型,会有一个上传路径,如:
上传路径upload_to:org/%Y/%m是个相对路径,意思是上传到后台的图片/文件,放到org文件夹/Y(年份)文件夹/m文件夹下,但绝对路径没给,不知道具体放的实际位置是哪,
这个时候需要在django中配置静态文件的处理方式,在setting中配置:上传的文件会自动存放到到/media/org/Y/m中
#settings.py#设置上传文件的路径MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')#指定根目录
2)关于文件/图片从xadmin上传到django项目中指定的文件夹的问题已经解决,接下来说在HTML模板中使用这些文件/图片,一般有两种方式
用第二种方式需要配置:
1)setting配置:上述已说明,配置上传文件路径
2)setting中TEMPLATES下的OPTIONS要加入这一句:用于识别前端模板MEDIA_URL路径,直接转换成:/media/,实现{{MEDIA_URL}}{{course_org.image}}→/media/org/2018/8/***.png的转换
TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[os.path.join(BASE_DIR,'templates')],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages','django.template.context_processors.media',#新增,用于media处理],},},]
3)url.py的配置:配置静态文件,是因为前端根据(2)中转换成的/media/org/2018/8/***.png路径,到url中serve配置好的路径找对应MEDIA_ROOT(根路径)下的media文件夹,即找到media/org/2018/8/***.png,然后显示到页面
fromdjango.urlsimportpath,include,re_pathfromdjango.views.staticimportserve#用于处理静态文件fromMxOnline.settingsimportMEDIA_ROOT#media路径urlpatterns=[#处理静态文件,使用Django自带serve,传入setting中路径配置MEDIAROOT,让它根据路径找re_path(r'^media/(P
一般推荐第二种,方便维护
views.py:
fromdjango.shortcutsimportrender,redirectfromorganizationimportmodelsfromdjango.core.paginatorimportPaginator,PageNotAnInteger,EmptyPage#Createyourviewshere.deforg_list(request):"""课程机构列表"""#所有课程机构all_orgs=models.CourseOrg.objects.all()orgs_count=all_orgs.count()#所有城市all_citys=models.CityDict.objects.all()#开始分页功能paginator=Paginator(all_orgs,5)page=request.GET.get('_page',1)try:orgs=paginator.page(page)#当前页显示的5个数据print(orgs)exceptPageNotAnInteger:#Ifpageisnotaninteger,deliverfirstpage.orgs=paginator.page(1)exceptEmptyPage:#Ifpageisoutofrange(e.g.9999),deliverlastpageofresults.orgs=paginator.page(paginator.num_pages)#paginator.num_pages:总页数,即返回最后一页returnrender(request,'organization/org-list.html',locals())ViewCode
app内新建templatetags包,在里面新建online_tag.py文件,用于自定义标签,返给HTML模板渲染:
HTML界面只需要一个导入跟一句代码便能实现分页功能:
{%loadmxonline_tags%}
1.1、创建Form类
1.2、views.py函数处理:
1.3、HTML页面:
{{obj.user}}{{obj.user.errors.0}} {{obj.pwd}}{{obj.pwd.errors.0}} {{obj.email}}{{obj.email.errors.0}} {{obj.city}}{{obj.city.errors.0}} {{obj.gender}}{{obj.gender.errors.0}} {{obj.abc}}{{obj.abc.errors.0}}