django Tips
Posted relaxlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django Tips相关的知识,希望对你有一定的参考价值。
django Tips
-
处理流程:
浏览器请求-->django-->url分发(urls.py)-->views视图处理逻辑(views.py)-->render(django模板渲染)-->返回浏览器解析
变量{{ var }}, 过滤器{{ var|length }}, 标签{% for name in dict%} 只是django的模板渲染,是django模板的语法,浏览器并不认识,django渲染(render,解析成浏览器能够识别的html格式)后再返回(return)浏览器解析--> return render(request, ‘home.html‘)
-
APPEND_SLASH 参数自动给网址结尾加‘/‘, django默认
APPEND_SLASH = False # 网址结尾不加/
-
浏览器发起get请求方式:
- 浏览器url地址栏
- a标签
- form表单
- ajax
-
浏览器发起post请求方式:
- form表单
- ajax
浏览器地址栏url发请求 等于 a标签href发请求
html
{% for book in book_lst %} <tr> <td>{{ forloop.counter }}</td> <td>{{ book.title }}</td> <td>{{ book.price }}</td> <td>{{ book.pub_date|date:‘Y-m-d‘ }}</td> <td>{{ book.publish }}</td> <td> <a href="" class="btn btn-warning">编辑</a> {# a 标签发请求 相当于 地址栏发请求 #} } <a href="/books/delete/{{ book.nid }}" class="btn btn-danger">删除</a> </td> </tr> {% endfor %} </tbody>
urls.py
url(r‘^books/delete/(d+)/‘, views.dele_book, name=‘new_book‘) # 传入需要删除的键值,并重定向到查询页,并且根据name 反向解析url,防止url地址更改
views.py
from django.urls import reverse def dele_book(request, book_nid): book.objects.filter(nid=book_nid).delete() url = reverse(‘new_book‘) return redirect(url)
-
外部环境使用django的models或者外部环境调用django的设置,需要配置django环境
# xxx.py import os if __name__ == ‘__main__‘: # django manage.py中的源码 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_relation.settings") # django环境, from app01.models import Book obj_list = [] for i in range(1, 10): obj = Book( title=f‘python{i}‘, price=120 + i * 10 publish = ‘上海出版社‘ if i < 5 else ‘北京出版社‘, ) obj_list.append(obj) Book.objects.bulk_create(obj_list) # 批量添加记录
-
mysql 时间差异, UTC时间, 中国处在东8区,本地要+8小时
django.settings:
TIME_ZONE = ‘Asia/Shanghai‘ USE_TZ = False
临时方案:
mysql> SET time_zone = ‘+8:00‘;
永久解决方案:
配置windows:my.ini linux: /etc/my.cnf
[mysqld] default-time_zone = ‘+8:00‘ service mysql restart #重启服务,linux
-
取主键值:对象.pk,不管对象内部主键的名字是什么,pk总能取到主键值
obj = Human.objects.get(name=‘sunny‘) print(obj.pk)
django目录结构
apps: app应用同一放在apps目录下(package) extra_apps: 存放第三方源码 media: 用户上传的目录 static: 静态文件目录 css js img ... templates: 模板html文件 requirement.txt: 项目依赖的第三方包罗列在此文件, pycharm会检测到依赖包是否安装
-
静态文件,url都用别名,以便修改,防止攻击
静态文件设置:
settings.py
STATIC_URL = ‘/static/‘ STATICFILES_DIRS=[ os.path.join(BASE_DIR, ‘static‘), ]
html调用:
{% load static %} <script src="{%static ‘js/jquery.js‘ %}"></script>
url别名设置:
urls.py
urlpatterns = [ path(‘login/‘, views.LoginView.as_view(), name=‘login‘), ]
html调用:
<form action="{% url ‘login‘ %}" method="post">
以上是关于django Tips的主要内容,如果未能解决你的问题,请参考以下文章
译ECMAScript 2016, 2017, 2018 新特性之必读篇
Halo2学习笔记——用户手册之Tips and tricks
pandas GroupBy上的方法apply:一般性的“拆分-应用-合并”
imgwarp.cpp:3143: error: (-215:Assertion failed) _src.total() > 0 in function ‘warpPerspective‘(代码片段