前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django学习-day02

django学习-day02

作者头像
kirin
发布2020-05-09 15:38:56
4380
发布2020-05-09 15:38:56
举报
文章被收录于专栏:Kirin博客

今天又是满满收获的一天,第一天学习了一个大概,第二天来学习细节部分,直接把笔记拷上来吧

#html页面

html页面操作,两个{{}}表示是一个变量,一个{}表示执行语句 在html页面中用{% if %} 来执行语句 需要结束标签对 {% endif %}

#网页重定向reverse from django.shortcuts import redirect,reverse # 网页跳转,重定向 def index(request): req=request.GET.get(‘username’) if req: # 判断网页是否登录,靠get提交方式来校测 return HttpResponse(‘前台首页’) else: return redirect(reverse(‘front:login’)) # 通过app的命名空间找到对应的url path(‘sinup/’,views.login,name=’login’) # 给url命名,通过reverse获取到path第一个参数 def login(request): return HttpResponse(‘前台登录页面’) 命名空间分为两种,实例命名空间和应用命名空间

实例命名空间views def index(request): req = request.GET.get(‘user’) if req: return HttpResponse(‘后台管理首页’) else: r=request.resolver_match.namespace return redirect(reverse(‘%s:login’ % r)) # 通过命名空间和redirect中的reverse 找到命名空间里面 def login(request): return HttpResponse(‘后台管理登录页面’)

主urls中 urlpatterns = [ path(‘admin/’, admin.site.urls), path(”,include(‘front.urls’)), path(‘cms1/’,include(‘cms.urls’,namespace=’cms1′)), # 加上namespace参数即可创建实例命名空间 path(‘cms2/’,include(‘cms.urls’,namespace=’cms2′)),

##引入路径 include (第一个参数是路径地址,第二个参数为应用命名空间名字)namespace=None re_path正则表达式的匹配路由 r^list/(?P<year>\d{4}/$) ()里面表示需要提取匹配的值,匹配前加r表示原生字符 ?p表示定义一个变量 ## 代码部分 def index(request): t=request.GET.get(‘u’) if t: return HttpResponse(‘前台首页’) else: return redirect(reverse(‘front:login’)) def login(request): t=request.GET.get(‘u’) if t: return HttpResponse(‘前台登录页’) else: f=reverse(‘front:dd’,kwargs={‘id’:2}) # 倒过来找到链接重定向, return redirect(f) def text(request,id): t=’你获取的id为:%s’% id return HttpResponse(t)

##文件功能 urls.py 专门存放url路由的模块 views.py 专门存放视图,也就是业务逻辑处理模块 models.py 专门储存数据模块 apps.py 用于设置项目的模块 admin.py 自带的后台管理模块,默认为空 setting.py 全局设置 asgi.py 服务器部署需要用到 wsgi.py 同上 项目名下面的urls.py是主url路由,各个url可以集中在自身app项目内的urls集中管理 需要调用的时候从主urls.py中直接导入路劲直接调用即可 可以在进行reverse翻转链接的时候在后面拼接+’?next=/’,在地址栏中显示下一步跳转,提升体验

#app_name urls文件里内创建命名空间 app_name=’appname’ app_name=’cate’ # 这个应用用于匹配url后面多个参数一起查询 from . import views urlpatterns=[ path(”,views.index), re_path(r’^list/(?P<cid>\w+|(\w+\+\w+)+)/’,views.list)] # 正则匹配

#模板渲染: **django渲染模板的方式有很多种,下面写出常用的两种 首先需要在setting中设置dirs目录为[‘tmplates’] 然后在主urls中设置好路由,接着导入** *** **第一种方法** 1,from django.tmplate.loader import render_to_string def index(request): html=render_to_string(‘index.html’) 需要通过一次转换才会渲染 return HttpResponse(html) *** **第二种方法** 2,from django.shortcuts import render def index(request): return render(request,’index.html’) 直接渲染了 ##模板渲染补充: 如果在setting->install_app中注册过了app 该app就会在dirs中写明的tmplates中查找模板文件, 没有注册的话就就会抛出一个异常,注册过后,又在自身 pp中tmplates中没有找到相应的模板文件的话就会到其他 的app中寻找,直到找到位置。最终都没有找都,抛出异常

#模板中html接收长文本细节 *** 需要注意的是如果你的数据类型为一个字典的话,在DTL中就不能够 使用常规的python语法来实现了,比如 dict={‘k’:[‘1′,’2′,’3’]}html中使用.来获取到上下文的值,k.o.0->0==[0] 如果你要在html中访问到字典中的列表中第一个参数该怎么做呢 模板中这样写render(request,’index’context=dict) 传入一个长文本,用于给html接收 只需要在html中这样写即可{{ k.0}} 即可获取到第一个列表的值,同理,所有在html中的操作都是不支持 []下标来操作数据的,只能够使用.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档