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, namespace=namespace)
 6     else:
 7         if isinstance(view, six.string_types):
 8             if not view:
 9                 raise ImproperlyConfigured(‘Empty URL pattern view name not permitted (for pattern %r)‘ % regex)
10             if prefix:
11                 view = prefix + ‘.‘ + view
12         return RegexURLPattern(regex, view, kwargs, name)

from django import urls

2:第二行的 isinstance(view, (list,tuple))判断类型,如果是列表或者元组,

4:urlconf_module, app_name, namespace = view 把view的值赋给这三个变量

5:return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)  待查看

7:isinstance(view, six.string_types):假如view是

basestring

basestring是str和unicode的超类(父类),也是抽象类,因此不能被调用和实例化,但可以被用来判断一个对象是否为str或者unicode的实例,isinstance(obj, basestring)等价于isinstance(obj, (str, unicode));

8:如果没有views,raise ImproperlyConfigured(‘Empty URL pattern view name not permitted (for pattern %r)‘ % regex)

raise

抛出异常,

10:如果prefix(前缀)有前缀,就拼接在一起,然后调用 REGEXURLPattern

url函数的参数:

regex是正则表达式

view

kwargs

name 就是那个 name=‘blog‘

prefix

时间: 2024-10-26 23:51:35

Django源码分析——URLS(还没弄明白)的相关文章

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源码分析——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源码分析之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

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 RequestCon

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源码分析——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源码分析----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