Django的一些隐性经验
隐性经验
- 前后信息的沟通
url中的参数 get获取 这个参数可以写在URL当中(可以写多个,写在这里的get函数需要有相应的参数去获取)。,也可以在模版中添加(通过?若是直接写则表示在当前的URL中添加,也可以在前面写动态的URL后边添加参数信息)
post获取 post获取的主要是form表单中的信息,因此有个小技巧,form表单中可以有一些隐身的信息,是get渲染模版的时候传过来的
# 以找回密码为例
url('^reset/(?P<active_code>.*)/$', ResetView.as_view(), name='reset_pwd'),
class ResetView(View):
def get(self,request,active_code):
all_recodes = EmailVerifyRecord.objects.filter(code=active_code)
if all_recodes:
for record in all_recodes:
email = record.email
#向模版中传入邮箱信息
return render(request,'password_reset.html',{
'email':email
})
else:
return render(request, 'active_fail.html')
return render(request,'login.html')
# html
<input type="hidden" value="{{ email }}" name="email">
# 因为form表单的action若是指向重置的链接,需要有一个参数,所以从新写了一个找回密码的类
class ModifyPwdView(View):
def post(self, request):
modify_form = ModifyPwdForm(request.POST)
if modify_form.is_valid():
pwd1 = request.POST.get('password1', '')
pwd2 = request.POST.get('password2', '')
# 得到隐身的信息
email = request.POST.get('email', '')
if pwd1 != pwd2:
return render(request, 'password_reset.html',{
'email':email,
'msg':'密码不一致'
})
user = UserProfile.objects.get(email=email)
user.password = make_password((pwd2))
user.save()
return render(request, 'login.html')
else:
email = request.POST.get('email', '')
return render(request, 'password_reset.html', {
'email': email,
'modify_form':modify_form
})
- 模版中无法判断是否为选中状态,可以在后端中添加一个字段,传到前端做区分
# view
current_page = 'home'
# html
class="{% if current_page == 'home' %}active2{% endif %}"
模板中需要一些数据库的逻辑处理,可以通过在model中直接添加函数,也可以通过自定义标签和过滤器来实现.
在含有基层和高层的app的时候要灵活的使用它们之间的联系,要那个类中含有这个外键字段,那么就可以通过这个字段的set找到那个类的信息.
def get_learn_users(self):
return self.usercourse_set.all()[:5]
- 模板中是for循环,但是若后台传递一个空的字符串会报错的.如果是空,应该传递一个空列表才行.
Django的一些隐性经验的更多相关文章
- 实战分享丨MySQL 与Django版本匹配相关经验
摘要:关于MySQL 与Django版本匹配相关知识的经验分享. run: (env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python ...
- Django一些开发经验
总结一些 Django 开发的小经验.先说一些最最基础的吧. 使用 virtualenv 隔离开发环境 使用 pip 管理项目依赖,主要就是一个小技巧,使用 pip freeze > requi ...
- Python超级程序员使用的开发工具
我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发? 你将来的计划是什么? 有什么给Py ...
- Django开发个人博客入门学习经验贴
[写在前面] 入门学习搭建个人博客系统首先还是参考大佬们的经验,记得刚入手Django的时候,一篇博客大佬说过一句话,做技术的不要一开始就扎头于细节中,先把握整体框架,了解这个对象之后再去了解细节,进 ...
- Django+Vue跨域配置与经验
一.原理 同源?同源策略? 同源的定义是:两个页面的协议.端口和域名都相同 同源的例子: 不同源的例子: 同源策略SOP(Same origin policy)是一种浏览器约定,它是浏览器最核心也最基 ...
- 【uWSGI】实战之Django配置经验
uWSGI 是应用服务器,实现了uwsgi, wsgi等协议,可以运行wsgi 应用 uwsgi 是协议名 Django配置 下面是自己经常用的一个配置模板,基于1.9以上的版本使用的, 主要基于dj ...
- Django学习经验
1.在1.9——>到2.0的版本中, Django.core.urlresolvers import reverse ——>django.urls 2.当无法访问时把原来的数据清空: 首先 ...
- 【Django】有关多用户管理的一点小经验分享
前言 最近,笔者因为需要开发一个系统作为毕设的展示,因此就产生了有关多用户管理的问题.在这里我把自己的需求重新阐明一下:能够通过Django自带的用户管理框架,实现多用户的管理,例如登录.登出.ses ...
- Django学习路19_is_delete属性,重写类方法,显性隐性属性
如果在 创建数据表时,使用了 objects = models.Model() 使隐形属性变为了 显性属性 则 必须要自己定义一个 继承了 models.Model 类的类,实现 管理功能 如果一个属 ...
随机推荐
- sql常用语句备忘录随时更新
一.查询最新的一条数据 SELECT * FROM Table a WHERE NOT EXISTS (SELECT FROM Table b WHERE a.Date>b.Date) 二.查询 ...
- 实战ELK(3) Kibana安装与简单实用
第一步:下载 https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-x86_64.rpm 第二步:安装 1.安装 yum install ...
- ActiveMQ(2)---ActiveMQ原理分析之消息发送
持久化消息和非持久化消息的发送策略 消息同步发送和异步发送 ActiveMQ支持同步.异步两种发送模式将消息发送到broker上.同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消 ...
- leetcode136
public class Solution { public int SingleNumber(int[] nums) { Dictionary<int, int> dic = new D ...
- 机器学习中的算法(2)-支持向量机(SVM)基础
版权声明:本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gma ...
- asmx 接收数据过大 发生错误
原文:https://www.cnblogs.com/xinaixia/p/5945316.html 错误:已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的 Max ...
- Apache 修改端口号
默认是80端口,可在httpd.conf文件中修改以下2个地方的端口号为预定的即可,例如修改为8080端口 把httpd.conf 中Listen 80 改成Listen 8080 把ServerNa ...
- 十一、Composite 组合模式
原理: 代码清单 Entity public abstract class Entry { public abstract String getName(); public abstract int ...
- python--第十天总结(IO多路复用)
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking IO):默认创建的s ...
- cisco PBR
access-list 2000 permit ip 10.11.50.0 0.0.0.255 anyaccess-list 2001 permit ip 10.11.50.0 0.0.0.255 1 ...