1.URL对应可以有参数,例如:
url(r'^index/', views.index, {'name': 'root'}),
然后在views.py中写的时候记得加上一个名为name的参数:
def index(request, name): print(name) return HttpResponse("OK")
这样就会打印出root
2.命名空间:
project下的ursl.py新加入:
url(r'^a/', include('app01.urls', namespace="author")),
app下的urls.py:
from django.conf.urls import url, include from app01 import views app_name = 'app01' urlpatterns = [ url(r'^index/', views.index, name="index"), ]
app的views.py:
def index(request): v = reverse('author:index') print(v) return HttpResponse("OK") #结果: /a/index/
3.ajax的跳转不能用redirect,应当用location.href = "URL"
4.models创建有验证功能的字段时候,比如EmailField(),在admin里面可以成功验证,不过如果用了create()或者updata()方法时候,这里的验证功能就会失效,还可以加上验证功能,后边讲。
5.views.py获取用户请求以及请求头:
def index(request): print(request.environ) #封装了所有用户请求信息 print(request.environ['HTTP_USER_AGENT']) #获取请求头
6.模板继承(很常用):
当多个模板有很多部分重复的时候:
可以写一个模板:
master.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> <link rel="stylesheet" href="/static/commons.css"/> <style> .pg-header{ height: 48px; background-color: seashell; color: red; } </style> {% block css %}{% endblock %} </head> <body> <div class="pg-header">管理</div> {% block content %}{% endblock %} <script src="/static/jquery.js"></script> {% block js %}{% endblock %} </body> </html>
然后在需要用它的html中这样写即可:
在第一行写模板名称,然后相应的写入即可。
{% extends 'master.html' %} {% block title %}用户管理{% endblock %} {% block content %} <h1>用户管理</h1> <ul> {% for i in u %} <li>{{ i }}</li> {% endfor %} </ul> {% endblock %} {% block css %} <style></style> {% endblock %} {% block js %} <script></script> {% endblock %}
7.模板导入
写一个示例tag.html:
<form> <input type="text"/> <input type="submit"/> </form>
当我在写html需要用到它的时候:
{% include "tag.html" %}