`
daiming253685
  • 浏览: 23564 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Django 要点笔记

阅读更多

 

                                        Django 要点

 

 

1. 安装Djangopython setup.py install

 

2.  django-admin.pyDjango的管理脚本。

django-admin.py startproject newtest:创建一个新项目,这个项目下面可以保护NWEB程序。


 


3. 项目文件(自动生成)

__init__.py

表示这是一个 Python 的包

manage.py

提供简单化的 django-admin.py 命令,特别是可以自动进行 DJANGO_SETTINGS_MODULES PYTHONPATH 的处理,而没有这个命令,处理上面环境变量是件麻烦的事情

settings.py

它是django的配置文件

uls.py

url映射处理文件,

 


4. manage.py runserver [port] 启动web server,可以指定端口,默认为8000


 


5. 正则表达式解析参数


   Django中到处都是正则,而且提交的参数也可以通过正则处理,比如


<?P<args>…> Group指定为args名,可以通过Match对象调用。Django中大量使用。


 


6. request.POST, request.GET,以及通吃的request.REQUEST


 


7. Django开发顺序:


 


8. render_to_response ,它可以直接调用模板并返回生成好的文本,直接返回它即可。它接收两个参数,第一个是模板的名字。它应该返回了一个HttpResponse对象,并拥有一个Context对象(变量环境操作)。而且传入的模板自动render了处理传入的dictContext对象。


 


9. Django 模板中 {{}} 表示引用一个变量, {%%} 表示代码调用。


 


10. 注意Context对象中的autoescape变量,它默认是True,会自动对Context中的数据进行转义(escape)


 

11. 创建Templates目录:

       在项目下建立一个Templates目录,然后

修改settings.py


 


TEMPLATE_DIRS = (


    # Put strings here, like "/home/html/django_templates".


    # Always use forward slashes, even on Windows.


    './templates',


)


Django 还支持在 App 中定义一个 templates 目录。这样 Django 在启动时会检查所有的 App templates 目录,如果存在,则将路径放在 TEMPLATE_DIRS 之后,也就是项目的Templates之后。这样就方便定义模板路径了。


 

12. django session 是存放在数据库中的。

 

13. 添加数据库:

修改settings.py

DATABASE_ENGINE = 'sqlite3'


DATABASE_NAME = './data.db'


DATABASE_USER = ''


DATABASE_PASSWORD = ''


DATABASE_HOST = ''


DATABASE_PORT = ''


    然后,使用django-admin.py 或 或者其简化manage.py


比如: manage.py syncdb,来同步数据库,就会生成一个数据库文件。


 

14. Django APP

 Model, Template, View 就合成了 MTV 这几个字母。 Model 是用来针对数据库,同时它可以用来自动生成管理界面, View 在前面我们一直都用它,用来处理请求和响应的相当于MVC框架中的 Controller 的作用, Template 用来生成界面。

创建App

manage.py startapp appname


自动生成如下文件:


__init__.py

表示 wiki 目录是一个包。

views.py

用来放它的 view 的代码。

models.py

用来放 model 代码。

15. 安装App

    修改settings.py

    INSTALLED_APPS = (


    'django.contrib.auth',


    'django.contrib.contenttypes',


    'django.contrib.sessions',


    'django.contrib.sites',


    'appname',


)


 

16. Wiki model 的名字,它需要从 models.Model 派生而来。采用ORM,无需关心底层的数据库

17. 数据库操作:

    对于数据库的记录有两种操纵方式,一种是集合方式,一种是对象方式。集合方式相当于表级操作,在新版的 0.92 中可以使用 model.objects 来处理。 objects 对象有一些集合方式的操作,如 all() 会返回全部记录, filter() 会根据条件返回部分记录。而象插入新记录则需要使用记录方式来操作,有时要直接使用 model 类。filter() 中使用的参数与一般的 db-api 是一样的,但如果是比较相等,可以为: pagename__exact=pagename 也可以简化为 pagename=pagename 。上面__后面是比较条件。

18. 可以为不同的App添加不同的template。只要将添加的App模板目录加到settings.py中。

19. admin Django 提供的一个核心 app(既然是 app 就需要安装,一会就看到了),它可以根据你的 model 来自动生成管理界面。

 

20. 简单的命令 manage.py reset address,重置指定的数据表,也就是会drop掉旧表,然后生成新表,可以修改表结构,但是所有的数据会删除。

21. 修改setting.py

LANGUAGE_CODE 'en' 改为 'zh-cn' TIME_ZONE 建议改为 'CCT'

刷新下界面,admin管理app就可以变成中文界面。

22. Django中一个通用的view生成模块。django.views. generic. list_detail,给出常用的现实方案,而不需要我们自己编写view,来控制显示。具体参见,相应的模块说明。

23. include 可以方便移植,每个 app 都可以有独立的 urls.py ,然后可以与 urls.py 合在一起使用。将appurls.py来包含到指定的主urls.py中。

24. 使用 object_list() 需要的模板文件名为: app_label/model_name_list.html ,这是缺省要查找的模板名。

25. 永远记住不要在python中留不必要的空行或空格,那是程序错误的万恶之源。

26. 要想在django中取得模板,请用app+下划线+模板名格式来取

27. 实现排序,只要在model类中添加一个名叫Meta 内部类,并设置其ordering = [‘字段名’],就会按指定的字段排序,’-’表示倒序。

 

28. 实现分页,仍使用django内置的generic view 机制,在使用 generic view object_list 时,它会根据 URL Dispatch 中是否设置了 paginate_by 这个参数来决定是否使用分页机制。一会我们会看到在 urls.py 的这个参数。一旦设置了这个参数,则 object_list 会使用 Django 提供的一个分页处理器来实现分页。它会自动产生分页所用到的许多的变量,这里我们使用了 has_previous, previous, has_next, next 这四个变量,还有其它一些变量可以使用。

修改urls.py :    (r'^/?$', 'django.views.generic.list_detail.object_list',


        dict(paginate_by=10, **info_dict)),


这里使用10行记录分页,并把info_dictpaginate_by变量一起合成一个dict,注意dictdict合并,必须使用可变参数**

 

29. 使用site_media:也即是指定放置多媒体文件的路径。

       修改urls.py ,注意是projecturls.py

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',


        {'document_root': settings.STATIC_PATH}),


django.views.static.serve,需要document_root参数,我们可以在settings.py中指定。那么我们的多媒体文件就放置在settings.py指定的STATIC_PATH目录中。

注意我们的settings.py文件的信息,可以通过 django.conf.setting来取得,他会先取得当前projectsettings模块的信息也就是DJANGO_SETTINGS_MODULE环境变量指定的settings模块,当前project中可以从当前project中取得,如果你想在项目外读取该settings模块,需要指定环境变量DJANGO_SETTINGS_MODULE,而且要在path环境变量中加入当前project目录,然后是全局的django.conf.global_settings的信息。

 

30. 搭建模板框架,我们可以建立一个基本模板,比如base.html,在这个模块中放置通用的东西,然后其它的模块扩展至他。

注意:{% block content %}content{% endblock %}其它的所有继承该模块的模块,新加的内容都必须写在content中。


扩展模块使用 extends :比如:{% extends "基本模块" %},注意必须写在子模块的开头。


 

31. Django添加filter

       需要在app目录下面新建一个目录 templatetags,该目录放置扩展filter,还可以扩展 Tag ,还可以设置模板变量,还可以进行块处理等复杂的操作。

       为了使这个文件成为一个包,需要添加__init__.py文件,为空就可。

然后添加一个filter文件,比如:change_gender.py,取得模板库,django.template. Library()

然后将filer注册给这个库就好了,比如:

 

register = django.template.Libary()

然后register.filter(‘过滤器名’,过滤器方法对象)

或者使用装饰器,@register.filter(name=’过滤方法’),装饰器,写在过滤方法上面,他将过滤方法作为一个参数传递给装饰器方法。

 

32. 可以在模板开始处,使用{%load 过滤器%}load使一个tag,来加载过滤器,他将会在response给客户端时调用。{% cycle mytr1,mytr2%},这里的cycle也是一个tag,他将循环使用后面给定的css 类。

 

33. 再要使用过滤器的地方使用管道,加上过滤器,管道标签’|’UNIX系统中常用),后面为过滤器。

 

34.一般对于template的修改或者urlviewmodel的修改都不需要重启服务器,而对于project的修改,或者setting.py文件的修改,都需要重启服务器。

 

35. 设置一般用户,通过adminadmin管理程序中添加,一般自动使用MD5加密,当然你也可以使用其它的加密算法,也可以使用加密后填入密码框,当然这种加密算法必须是django所支持的。

 

36. django.contrib.admin.views.decorators import staff_member_required

通过staff_member_required 这个装饰器,就可以让当前被装饰的请求处理方法,处理,如果没有登陆,而进入该方法,就会转到admin登陆界面。

 

37. 注意在request对象中有一个user对象,它就是当前登录的用户。我们可以通过其控制用户的登录行为。例如在settings.py中设置一个UPLOAD_USER,然后在上传方法中处理,就可以控制用户的上传行为。

 

38. 查询模块。name_icontains Django 中过滤条件的写法。这里是说只要包含指定的字符的即可,而且不区分大小写。

 

39. i18n,对于国际化的处理,这里不多说,因为我这里没遇到问题,不过要记住确认所有的编码统一,而且为国际统一编码,最好都用utf-8

 

40. 自定义Tag。首先,Tag必须是django.template.Node类型。然后在这个Node 调用它们的 render() 方法,然后将输出结果拼接起来,也就是返回给客户端的结果。然后是注册到系统中,并使用注册方法。注意这个Tag所对应的处理类,应该放在在templateTags目录下,然后在模板中使用的时候,要加载这个Tag,也就是对应得处理模块。我想filterTag在实际上时同一种东西。

 

django新特性:

   

 

Django 1.0.2 开始, maxlength 应改为:max_length

Django 1.0.2 开始,Context类默认autoescape=True,可以使用代名字的参数设为False,或者模板中{% autoescape off %},注意写在页首。

   Django 0.9

 gender = models.CharField('性别', choices=(('M', ''), ('F', '')),

        max_length=1)

radio_admin=True 已经在 Django 1.1 中不适用了,不能写在 field 里,admin model分离了,把 models.py 的全部内容用以下代码替换:

class AddressAdmin(admin.options.ModelAdmin):

        model=Address

        radio_fields = {'gender':admin.VERTICAL}

 

admin.site.register(Address, AddressAdmin)

 

urls中启动admin,如下:

(r'^admin/', include(admin.site.urls)),

 

创建超级用户,被默认到了django命令中,所以只要运行
./manage.py createsuperuser

就可以了。

 

必须在models.py中添加__str__就可以改变数据纪录的页面显示,以前版本的__repr__不可用了。

 

新添加快捷方法 django.shortcuts.redirect()代替django.http.HttpResponseRedirect

新的上传程序的写法:

        file = request.FILES['file']
        file_name = get_unique_file_name()
       
        path1 = os.path.join(settings.DIVO_TEMP_ROOT, 'xf')
        destination = open('%s/%s' % (path1, file_name), 'wb+')
        for chunk in file.chunks():
            destination.write(chunk)
        destination.close()

在以前的版本中的InMemoryUploadedFile[‘content’],改成了InMemoryUploadedFile.read()

 

 

总结:上面是我初学Django的总结,有很多不足。

 

0
0
分享到:
评论

相关推荐

    Django学习笔记--阉割版

    Django学习笔记--阉割版 Django是Python下的一个免费开源的Web应用框架,使用它可以快速构建可维护、可扩展...本文总结了 Django 的基本概念和技术要点,包括安装、项目结构、应用程序、视图、路由、模型和数据库等。

    Django知识总结-手摘版

    这是一份Django学习笔记,里面记录了Django开发的大部分知识点,进行了罗列。

    这是一个毕业设计用的云笔记网站.zip

    下面将详细阐述这些关键领域的要点。 1. **前端开发**:前端是用户与应用交互的部分,主要由HTML、CSS和JavaScript构成。HTML用于创建页面结构,CSS负责样式设计,使页面美观易用,而JavaScript则处理用户交互和...

    Python学习手册笔记.zip

    "Python学习手册笔记.zip" 提示这是一个关于Python编程的学习资料压缩包,可能包含了一个或多个文档,如本例中的"Python学习手册笔记.md",这通常是一个Markdown格式的文本文件,用于记录学习过程中的要点和心得。...

    python全套学习笔记

    以下是一些主要的学习要点: 1. **基础语法**:Python的基础始于变量、数据类型(如整数、浮点数、字符串、布尔值)以及运算符的使用。理解列表、元组、字典和集合等复合数据结构是至关重要的。此外,学习流程控制...

    my-personal-zen:my从我的阅读中收集笔记和要点

    标题 "my-personal-zen: 我从我的阅读中收集笔记和要点" 暗示这是一个个人知识管理系统,其中包含了作者在阅读过程中整理的笔记和关键信息。描述 "我的个人禅 我的读书笔记和重点摘要 我写过" 确认了这个项目的性质...

    python 和 diango 学习资料,书籍,文章,以及实战项目等等.zip

    4. 笔记或讲义:这些可能是别人在学习过程中整理的要点,可以帮助你快速理解和回顾关键知识点。 5. 资源链接或推荐列表:可能包含更多外部学习资源,如在线课程、论坛讨论、官方文档等。 为了充分利用这些资源,...

    note:仅存的一些笔记

    【描述】中的"笔记"一词简洁明了,表明内容可能涵盖了各种主题,可能是编程语言的语法要点、软件开发流程、问题解决策略,或者是对某个技术框架的解析等。笔记的特点是针对性强,易于理解和回顾,对于学习者来说是一...

    开发笔记:关于我学到的一切的快速笔记

    "dev-notes-main"这个文件名暗示了笔记可能是一个主要的、综合性的开发资源,包含了上述多个领域的核心要点。通过深入阅读和理解这些笔记,开发者不仅可以巩固已有的知识,还能发现新的学习方向,从而提升自己的专业...

    流畅的Python学习记录.zip

    《流畅的Python学习记录》是一份综合性的Python学习资料,其中包含了作者在深入学习Python过程中积累的各种知识要点、技巧和实践经验。这份压缩包文件可能是为了帮助初学者或有一定基础的Python开发者巩固技能、提升...

    十次方项目

    "十次方项目.txt"可能是项目介绍、教程大纲或者是关键概念的笔记,它可能包含了项目的核心要点,帮助学习者快速定位和理解项目的主要内容。通过阅读这个文本文件,你可以获得更具体的学习路径和重点。 总的来说,...

    brother-jin.zip

    在这个上下文中,我们可以推测这份资料可能是一位名叫"金兄"的人或者一个与"金兄"相关的话题,比如他的面试经验、面试技巧或者是他在面试过程中的学习笔记。由于没有更多关于文件的具体内容,我们将从一般性的面试...

    rodriados:想法,注意事项和其他个人物品

    1. **笔记(Notes)**:罗德里戈可能在他的笔记中记录了他在编程过程中遇到的问题、解决方案、技术要点或者是学习新语言或框架的心得。这可能包括代码片段、调试技巧、设计模式的应用等。通过查看“rodriados-master...

    TIL:배운것정리

    这些文件可能以markdown、txt或其他格式存在,每一份都记录了作者在特定时间学到的技术要点。例如,“TIL-main”下可能有“2022-01-01_python.md”,表示作者在2022年1月1日学习了Python的相关知识;或者...

    Learn:学习框架的记录

    本项目"Learn:学习框架的记录"显然是一个个人学习历程的整理,专注于记录不同框架的学习心得和技术要点。 首先,我们可以从标题"Learn:学习框架的记录"中理解到,这是一个关于学习各种编程框架的资料集合。框架的...

    NLP注意事项

    自然语言处理(NLP)是计算机科学领域的一个重要分支,主要关注如何使计算机理解、解析、生成和操作人类自然语言...NLPNotes-master可能包含有关这些主题的详细笔记和代码示例,进一步学习这些材料将加深对NLP的理解。

    pythonworkshop

    【Python工作坊】是本次知识分享的主题,它涵盖了在Python编程语言学习过程中的各种要点和实践。这个工作坊可能是为了教育或培训目的而设计的,旨在帮助参与者深入了解Python的基础和高级概念。通过这个工作坊,参与...

Global site tag (gtag.js) - Google Analytics