Django源码分析——shotcuts

 1 def render(request, *args, **kwargs):
 2     """
 3     Returns a HttpResponse whose content is filled with the result of calling||返回的HttpResponse的内容充满了调用的结果
 4     django.template.loader.render_to_string() with the passed arguments.
 5     Uses a RequestContext by default.   使用RequestContext默认情况下。
 6     """
 7     httpresponse_kwargs = {
 8         ‘content_type‘: kwargs.pop(‘content_type‘, None),
 9         ‘status‘: kwargs.pop(‘status‘, None),
10     }
11
**kwargs  的用法是输入的参数变为一个字典
12     if ‘context_instance‘ in kwargs:
13         context_instance = kwargs.pop(‘context_instance‘)
14         if kwargs.get(‘current_app‘, None):
15             raise ValueError(‘If you provide a context_instance you must ‘
16                              ‘set its current_app before calling render()‘)
17     else:
18         current_app = kwargs.pop(‘current_app‘, None)
19         context_instance = RequestContext(request, current_app=current_app)
20
21     kwargs[‘context_instance‘] = context_instance
22
23     return HttpResponse(loader.render_to_string(*args, **kwargs),
24                         **httpresponse_kwargs)

from django.shotcuts import render

1.*args :可以输入多个参数

my.HTML    博客参数  都是属于 args

(2)在字典里,in与has_key的用法是一样的,但是推荐用in  ,Python3 已经删除 has_key了

列如第12行

(3)字典的pop方法:  pop[‘key’]   把这个键的键和值都删除了;并且把他取出来

列如第8行,第13行

(4)raise的用法

a =10
if a:
    raise ValueError(‘a == 10‘)

时间: 2024-10-23 22:37:27

Django源码分析——shotcuts的相关文章

django源码分析

原文网址 https://www.jianshu.com/p/17d78b52c732?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 环境说明 [x] Python 3.5 [x] Django 1.10.4 创建一个django项目 C:\Users\zhengtong>C:\Python35\Scripts\django-admin.exe st

django源码分析——静态文件staticfiles中间件

本文环境python3.5.2,django1.10.x系列 1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化,然后调用相应的设置方法. django框架提供的认证,回话保持,静态文件调试处理等都是通过以中间件的形式来处理. 2.本节就分析一下django框架提供的staticfiles中间件,该中间件分别实现了三个框架的命令,分别为collectstatic,findstatic,runserver. 其中,runserver

django源码分析---- Model类型&Field类型

djiango在数据库这方式自己实现了orm(object relationship mapping 对象关系模型映射).这个主要是用到python 元类这一 项python中的高级技术来实现的. class ModelBase(type): def __new__(cls,name,bases,attrs): # ..... pass pass class Model(metaclass=ModelBase): pass # 在这之后所有的用户自定义模型都继承自Model类 class Per

Django源码分析——urlresolvers.py

因为看URL,所以跟到了urlresolvers.py regex是正则表达式 view kwargs name 就是那个 name='blog' prefix 1 class RegexURLResolver(LocaleRegexProvider): 2 def __init__(self, regex, urlconf_name, default_kwargs=None, app_name=None, namespace=None): 3 LocaleRegexProvider.__ini

Django源码分析——response.py

1 class HttpResponse(HttpResponseBase): 2 """ 3 An HTTP response class with a string as content. 4 5 This content that can be read, appended to or replaced. 6 """ 7 8 streaming = False 9 10 def __init__(self, content='', *arg

Django源码分析——URLS(还没弄明白)

1 def url(regex, view, kwargs=None, name=None, prefix=''): 2 if isinstance(view, (list,tuple)): 3 # For include(...) processing. 4 urlconf_module, app_name, namespace = view 5 return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name,

django源码分析----Related继承结构

在django中关联关系大概可以分成many-to-one(foriegnkey).one-to-one.many-to-many 这三种.它们有如下的类结构 class RelatedField(Field): class ForeignObject(RelatedField): class ForeignKey(ForeignObject): class OneToOneField(ForeignKey): class ManyToManyField(RelatedField): ----

Django源码分析之权限系统_擒贼先擒王

乍见 Django内置的权限系统已经很完善了,加上django-guardian提供的功能,基本上能满足大部分的权限需求.暂且不说django-guardian,我们先来看下Django内置的权限系统:django.contrib.auth 包. 相识 一般权限系统分为全局权限和对象权限.Django只提供了一个对象权限的框架,具体实现由第三方库django-gardian完成.我们只看全局权限. 先来看auth包暴露出哪些接口. django.contrib.auth.__init__.py

Django源码分析之server

乍见 Django内置的server基本包括两部分:django.core.servers和django.core.handlers 相识 servers.basehttp是Django自身提供的一个用于开发测试的server模块,其中提供的WSGIServer.ServerHandler.WSGIRequestHandler其实都是属于WSGI server,django只不过是对python内置的WSGI模块simple_server做的一层包装. handlers package包括bas