Django开发点菜系统学习笔记
1.使用django-simple-captcha包的时候,会调用到:
register_form = RegisterForm(request.POST)
但是这个时候captcha不进行错误检验,之后调用:
register_form.is_valid()
后才会进行整个form里的检验,比如验证码输入错误。
2.在使用django写html时载入的static不会继承,每个页面都要从新载入static:
{% load staticfiles %}
//2017.04.20
今天写点菜系统登录功能时卡在了前端,因为模板上的登录方式是在主页面弹出一个浮窗口类似穆克网登录模式,我无法让用户提交用户名和密码后返回当前显示登录窗口的页面
解决办法:
源码:模板上是使用Jquery写的这个页面,点击id名为login-btn的地方就实现下面的功能,第一句是显示id名为popup-overlay的模块,第二句是将id名为popup-login的以淡入的效果出现。popup-overlay是让后面那个大背景变暗,popup-login是那个登陆页面
$("#login-btn").click(function () { $("#popup-overlay").css('display', 'block'); $("#popup-login").fadeIn() });
方法:页面加载完就跳出登录窗口的实现是在jq中使用ready,就是源码部分中click改成ready就行。或者就是js中window.onload。
这里我把click改成了ready,成功解决问题:
$("#login-btn").ready(function () { $("#popup-overlay").css('display', 'block'); $("#popup-login").fadeIn() });
//2017.04.21
今天在写程序时遇到了这样一个问题:如何在HTML中提取出django的From表单的错误信息?
解决办法:这需要我们自定义一个template tag,首先让我们在所使用的app中建立templatetags文件夹,创建__init__.py(目的是把这个文件夹变成包,可以import),随后让我们建立一个py文件,如图:
在我创建的user_tags.py里写入:
from django import template register = template.Library() @register .simple_tag def error_msg(error_list): if error_list: return error_list[0] return ''
如图:
之后再在我们需要取出From表单的错误信息的HTML页面中,先载入这个文件:{% load user_tags %};再写入这种格式的语句:{% error_msg ****** %}就可以了。
最后贴上我的代码:
{% load user_tags %} <h2>登录</h2> <hr class="separator"> <form method="post" action="{% url 'login' %}" class="form clearfix"> <fieldset> <label for="login-username">用户名:</label> <input type="text" name="username" id="login-username" class="input text {% if login_form.errors.username or msg %}error{% endif %}" value="{% error_msg login_form.errors.username %}{{ msg }}"> <label for="login-password">密码:</label> <input {% if not login_form.errors.password %}type="password"{% endif %} name="password" id="login-password" class="input text {% if login_form.errors.username %}error{% endif %}" value="{% error_msg login_form.errors.password %}"> </fieldset> <button class="button submit"> 登录 </button> {% csrf_token %} </form>