Djnago的一些零碎知识点

1.TEMPLATE_DIRS relative to the project folderhtml

http://stackoverflow.com/questions/9856683/using-pythons-os-path-how-do-i-go-up-one-directorypython

When developing with Django we need to specify our templates directory inside the settings.py with the TEMPLATE_DIRS directive. When it comes to deploying or publising the application we often forget to change this setting to the new folder where the application will be deployed. In order to counter this, it is possible to make this setting dynamic with the following in setting.pydjango

import os.path 
PROJECT_DIR = os.path.dirname(__file__) # this is not Django setting. 

TEMPLATE_DIRS = ( 
    os.path.join(PROJECT_DIR, "templates"), 

# here you can add another templates directory if you wish. 
) 

2.Unicode对象app

 什么是Unicode对象呢?ide

 你能够认为unicode对象就是一个Python字符串,它能够处理上百万不一样类别的字符——从古老版本的Latin字符到非Latin字符,再到曲折的引用和艰涩的符号。函数

普通的python字符串是通过编码的,意思就是它们使用了某种编码方式(如ASCII,ISO-8859-1或者UTF-8)来编码。 若是你把奇特的字符(其它任何超出标准128个如0-9和A-Z之类的ASCII字符)保存在一个普通的Python字符串里,你必定要跟踪你的字符串是用什么编码的,不然这些奇特的字符可能会在显示或者打印的时候出现乱码。 当你尝试要将用某种编码保存的数据结合到另一种编码的数据中,或者你想要把它显示在已经假定了某种编码的程序中的时候,问题就会发生。 咱们都已经见到过网页和邮件被???弄得乱七八糟。 ?????? 或者其它出如今奇怪位置的字符:这通常来讲就是存在编码问题了。 工具

可是Unicode对象并无编码。它们使用Unicode,一个一致的,通用的字符编码集。 当你在Python中处理Unicode对象的时候,你能够直接将它们混合使用和互相匹配而没必要去考虑编码细节。this

Django 在其内部的各个方面都使用到了 Unicode 对象。 模型 对象中,检索匹配方面的操做使用的是 Unicode 对象,视图 函数之间的交互使用的是 Unicode 对象,模板的渲染也是用的 Unicode 对象。 一般,咱们没必要担忧编码是否正确,后台会处理的很好。编码

注意,咱们这里只是对Unicode对象进行很是浅显的概述,若要深刻了解你可能须要查阅相关的资料。 这是一个很好的起点:http://www.joelonsoftware.com/articles/Unicode.htmlurl

3.Admin是如何工做的

 

在幕后,管理工具是如何工做的呢? 其实很简单。

当服务启动时,Django从`` url.py`` 引导URLconf,而后执行`` admin.autodiscover()`` 语句。 这个函数遍历INSTALLED_APPS配置,而且寻找相关的 admin.py文件。 若是在指定的app目录下找到admin.py,它就执行其中的代码。

 在`` books`` 应用程序目录下的`` admin.py`` 文件中,每次调用`` admin.site.register()`` 都将那个模块注册到管理工具中。 管理工具只为那些明确注册了的模块显示一个编辑/修改的界面。 

应用程序`` django.contrib.auth`` 包含自身的`` admin.py`` ,因此Users和Groups能在管理工具中自动显示。 其它的django.contrib应用程序,如django.contrib.redirects,其它从网上下在的第三方Django应用程序同样,都会自行添加到管理工具。

综上所述,管理工具其实就是一个Django应用程序,包含本身的模块、模板、视图和URLpatterns。 你要像添加本身的视图同样,把它添加到URLconf里面。 你能够在Django基本代码中的django/contrib/admin 目录下,检查它的模板、视图和URLpatterns,但你不要尝试直接修改其中的任何代码,由于里面有不少地方可让你自定义管理工具的工做方式。 (若是你确实想浏览Django管理工具的代码,请谨记它在读取关于模块的元数据过程当中作了些不简单的工做,所以最好花些时间阅读和理解那些代码。)

相关文章
相关标签/搜索