def message(request): message_list = MessageBoard.objects.all().order_by('-pk') return render(request, 'message_board.html', message_list) 出错的代码位置 实际上views中返回的必须是字典 见http://stackoverflow.com/questions/31105131/django-cannot-convert-dictionary-update-…
decorators(装饰器) 1. require_http_methods 在django.views.decorators.http中,可以用来限制请求的权限. require_http_methods(request_method_list), 这样只有request_method_list中的方法可以得到结果,否则view不会接受请求.看下面官方例子,@require_http_methods(["GET","POST"]),结果是只有GET,POST的请…
shortcut function都在django.shortcuts这个包中,主要包含有:render(), render_to_response(), redirect(), get_objects_or_404(), get_list_or_404() 1. render(request, template_name, context=None, context_instance=_context_instance_undefined, content_type=None, status=…
关于装饰器 示例: 有返回值的装饰器:判断用户是否登录,如果登录继续执行函数,否则跳回登录界面 def auth(func): def inner(request, *args, **kwargs): username = request.COOKIES.get('username') if not username: # 如果无法获取 'username' COOKIES,就跳转到 '/login.html' return redirect('/login.html') # 原函数执行前 re…
知其然亦要知其所以然 views每个方法的参数都是request,那么问题来了,request为何物? 首先,几乎每个方法都是取数据(无论是从数据库,还是从第三方接口),然后进行一定的处理,之后传给前端.而前端请求数据,就会向后端发送一个http请求,这个请求的请求路径,经过urls,会调用url中指定的方法.此时django就会将HttpRequest对象作为第一个参数传入此方法.故,request即为一个httpRequest对象. 然后,出现了一个新问题,httpRequest是什么,又含…
Django框架中views视图中如果多个函数都有同样的查询语句,例如: allcategory = Category.objects.all() remen = Article.objects.filter(tui__id=2)[:6] tags = Tag.objects.all() 如果不优化,会导致每执行一次函数,都会重新查询一遍数据库,现进行简要优化:步骤如下 第一步,将以上三行语句拷贝出来,重构成一个独立的函数如下: def global_variable(request): all…
Django是个好工具,使用的很广泛. 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了.当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码. 怎么查问题 Web系统是个挺复杂的玩意,有时候有点无从下手哈.可以采用 自底向上 的顺序,从数据存储一直到数据展现,按照这个顺序一点一点查找性能问题. 数据库 (缺少索引/数据模型) 数据存储接口 (ORM/低效的查询) 展现/数据使用 (Views/报表等) Web应用的大部分问题都会跟 数据库 扯上关系.除非…
一.配置文件settings.py中 # 设置django缓存存放位置为redis数据库,并设置一个默认(default)选项,在redis中(配置文件/etc/redis/redis.conf)开启了RDB持久化储存 # pip install django-redis, 然后在视图中可以通过 from django_redis import get_redis_connection 这个方法和redis数据库进行连接 CACHES = { "default": { "BA…
在demo项目的settings.py文件中找到 STATICFILES_DIRS STATICFILES_DIRS = ( 'static', #这个名字是项目根目录下的文件夹名称,注意后面有逗号 ) 然后打开urls.py文件,导入文件settings from django.conf import settings urlpatterns = patterns('', url(r'^static/(?P<path>.*)$','django.views.static.serve',{'d…
在 Django 模板中遍历复杂数据结构的关键是句点字符 ( . ). 实例二 mysit/templates/myhtml2.html修改如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{ time.year }}…