1. django注释
{#。。。。。#}
2. django过滤器
{{ name | lower }},将name变量的值转化成小写; {{ my_text|escape|linebreaks }}
,转移文本为html,再转化每行到<p>
需要参数的过滤器:{{ bio|truncatewords:"30" }} 这个将显示变量 bio 的前30
个词。过滤器参数总是使用双引号标识。
3. locals()
def method(request):
now = datetime.datetime.now()
return render_to_response('index.html',locals())
return render_to_response('index.html',{'time':now}) 两种写法都可以,locals()
将局部变量都组织成dict 格式,懒人专用
4. {{block.super}}获取父级页面对应标签内容
(1){%block
title%}本页面的title,{{block.super}}{%endblock%}======》》》<title>本页面的title,父页面的title</title>
(2)一个页面中不要出现多个同名的block,否则模板引擎解析将混乱
5. {% extends 'base.html' %}
(1)extends 标记只能放在最顶部,否则失效
(2)extends 后面跟:一个字符串或者是一个变量
(3)extends
对传入的模板名称,加载方式和get_template(),render_to_response()相同,都是以settings中TEMPLATES_DIRS
为前缀
6. MTV (区别于MVC模式)
Django 关注模型(Model)、模板(Template)和视图(Views),Django 也被称为 MTV 框架 。
在 MTV 开发模式中:
M 代表模型(Model),即数据存取层。该层处理与数据相关的所有事务:如何存取如何确认有效性、包含哪些行为以及数据之间的关系等。
T 代表模板(Template),即表现层。该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。
V 代表视图(View),即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。可以把它看作模型与模板之间的桥梁。
7. manage.py 常用命令
python manage.py validate 验证模型是否有错误
python manage.py sqlall books 查看生成的sql代码,sqlall 命令并没有在数据库中真正创建数据表,只是把 SQL
语句段打印出来
python manage.py syncdb 执行数据库同步,生成表结构
python manage.py runserver lcalhost:8080 启动django应用程序
8.django modles之添加,修改,删除数据
添加/更新一条数据: (1)实例化一个model类(2)调用该实例的save()方法,当二次调用save时,不会添加只会修改数据
获取一张表的所有数据:类名点objects.all()
模块的字符串表现(必须返回字符串):
class Author(models.Model):
name = CharField(max_length=30)
.................................................................
def __str__(self):
return self.name
删除一条或多条数据:
l1 = Author.objects.all()
l1.delete() 删除所有Author表数据,也可以获取单挑删除
9. django modles之objects数据管理器(数据筛选)
(1)equal
Author.objects.filter(name='kevin') 对应的sql语句是:select name,.... where
name='kevin',为什么不用select *,而具体指明字段呢,在python界里有一信条:“ 明确比不明确来的好 ”
filter(name='kevin',[key=value])可以传多个类似的参数,相应会生成多个and 条件后查询
(2)__like, __in,__iexact,
__exact,__contains,__gt,__gte,__lt,__lte,__startswith,__istartswith(sqlite中使用),__endswith,__iendswith(sqlite中使用),__range(start,end)
Author.objects.filter(name__contains='kevin') ==>select name,.... where
name like '%kevin%'
Author.objects.filter(name__in=['kevin','miao']) ==>select name,.... where
name in('kevin','miao')
Author.objects.filter(name__iexact='kevin')==>select name,.... where name
like 'kevin')
Author.objects.filter(name__iexact='kevin')==>select name,.... where name
= 'kevin')
Author.objects.filter(name__iexact='kevin')==>select name,.... where
name like '%kevin%')
Entry.objects.filter(id__gt=4) ==> SELECT ... WHERE id
> 4;
Entry.objects.filter(id__gte=4) ==> SELECT ... WHERE id
>= 4;
Entry.objects.filter(id__lt=4) ==> SELECT ... WHERE id < 4;
Entry.objects.filter(id__lte=4) ==> SELECT ... WHERE id <= 4;
Entry.objects.filter(headline__startswith='Will') ==> SELECT ... WHERE headline
LIKE 'Will%';
Entry.objects.filter(headline__endswith='Will') ==> SELECT
... WHERE headline LIKE
'%Will';
start_date=datetime.date(2005,1,1)
end_date=datetime.date(2005,3,31)
Entry.objects.filter(pub_date__range=(start_date,end_date))
SELECT ... WHERE pub_date BETWEEN
'2005-01-01' and
'2005-03-31';
https://docs.djangoproject.com/en/dev/ref/models/querysets/#std:fieldlookup-exact
(3)双下划线的特殊使用(上下级关系)user(类)__user_id(属性)
class Test():
id=models.IntergerField(primarykey=true)
user = models.ForeignKey(User, core=True)
class User():
user_id=models.IntergerField(primarykey=true)
user_name=models.CharField(maxlength=500,null=True)
这样的话,我们在别处就可以通过Test.user_id来访问User的主键:
result=Test.objects.get(id=1)
result.user_id 是可以的
result.user.user_id也是可以的。
有一点比较奇怪,也是笔者不太明白的是,如果要在对Test对象进行查询的时候,对user_id进行限制的话,不能用点操作符了,而必须使用
双下划线,比如说要取user_id等于1的Test对象,则使用下面的语句:
Test.objects.filter(user__user_id=1)
分析可以发现,在查询的条件当中,所有的这种上下级的操作符都是双下划线,比如说__gt __lt __year __month
再到这里的user__user_id
(4)objects.get 获取单个对象
Author.objects.get(name='kevin') 如果结果集中有多个name=‘kevin’
的数据,或者没有找到数据,将会抛出异常
(5)order_by 排序
Author.objects.all().order_by('name') ,‘ -name ’方序(desc)
可以在模型中定义内部类Meta,并指明ordering,缺省情况下将使用此排序:
def Author(models.Model):
name = CharField(max_length=30)
................................................................
def __str__(self):
return self.name
class Meta:
ordering = ["name"]
(6)限制返回的数据
Author.objects.all()[0] ===>> select name,.... from Author limit 1
10. model 层修改字段时如何同步到数据库
python manage.py syncdb 只能创建table,无法修改,即当model变动时,syncdb不能及时影响到数据库
解决办法:
(1)手动修改数据库
(2)进入数据库交互命令界面,进行alter操作
(3)使用django-evolution 的命令:
python manage.py evolve --hint --execute
安装方式: easy_install -U django_evolution
前提是安装了setuptools,并把Scripts目录添加到环境变量
11. django 之自定义模板
settings 中 TEMPLATE_DIRS 配置设置了Django 加载模板的目录列表。 要自定义Django 的管理模板,只需要拷贝 Django
发行版中的整个管理模板到你在 TEMPLATE_DIRS里设置的模板目录里。 管理站点的头部区域在模板 admin/base_site.html
里。缺省情况下,这个模板在 Django管理模板目录 django/contrib/admin/templates 里,你可以在Django 的安装
目录找到它,例如Python 的 site-packages 目录或者你安装的其他目录。要自定义 这个 base_site
模板,把这个模板拷贝到你的模板目录下的 admin 子目录。 例如,假定你的模板目录是 "/home/mytemplates" ,拷贝
django/contrib/admin/templates/admin/base_site.html 到
/home/mytemplates/admin/base_site.html 。不要忘了有 admin 子目录。 然后,编辑这个新
admin/base_site.html 文件,替换你自己站点的名称上去。 备注 每个Django 缺省的管理模板都可以重载。要重载一个模板,就象
base_site.html 一样的去做:把它从缺省目录中拷贝到你自己的模板目录中然后修改它。
12. django 之urls配置技巧
##########################
from mybook.views import method1, method2, method3
urlpatterns = patterns('发现这里一般都是空的',
(r'^m1/$', method1),
(r'^m2/$', method2),
(r'^m3/$', method3),
)
##########################
这种配置如果views过多会导致难于阅读和管理
##########################
#from mybook.views import method1, method2, method3
urlpatterns = patterns('mybook.views',
(r'^m1/$', ‘method1’),
(r'^m2/$', ‘method2‘),
(r'^m3/$', ’method3’),
)
##########################
提取出一个公共视图前缀 mybook.views,不要在前缀后面跟着一个点号("." ),也不要在视图字符串前面放一个点号("." ), Django
会自动处理它们.
推荐使用这种方式,而且可以使用多个视图前缀 :
#from mybook.views import method1, method2, method3
urlpatterns = patterns('mybook.views',
(r'^m1/$', ‘method1’),
(r'^m2/$', ‘method2‘),
(r'^m3/$', ’method3’),
)
urlpatterns += patterns('youbook.views',
(r'^m1/$', ‘method1’),
(r'^m2/$', ‘method2‘),
(r'^m3/$', ’method3’),
)
django
框架寻找模块级别变量:urlpatterns,改变可以动态构建此处使用 “ += ”进行合并
利用动态构建urlpatterns技术,可以制作调试模式特例,如:
在urls中添加:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^debuginfo$', 'mysite.views.debug'),
)
只有在settings中设置DEBUG=True的时候,访问地址“debuginfo”才有效
##########################
URL 命名组方式
views.py 中:
def method1(year, month):
pass
urls.py 中:
urlpatterns = patterns('mybook.views',
(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$',
views.month_archive),
)
在 Python 正则表达式中,命名的正则表达式组的语法是 (?P<name>pattern) ,这里 name 是组的名字(参数名),而
pattern 是匹配的某个模式。 使用命名组可以让你的URLconfs 更加清晰,减少参数次序可能搞混的潜在 BUG。
如果我们想修改 URL 把月份放到 年份的 前面 ,而不使用命名组的话,我们就不得不去修改视图 month_archive
的参数次序。如果我们使用命名组的话,修改 URL 里提取参数的次序对视图没有影响
传递额外的参数到视图函数中
urlpatterns = patterns('',
(r'^foo/$', views.foobar_view, {'template_name': 'template1.html'}),
(r'^bar/$', views.foobar_view, {'template_name': 'template2.html'}),
)
相关推荐
需要程序员经常刷题吗Django 备忘单 作为 Django 的初学者,我在学习一个新框架时会做程序员通常做的事情:大量 google,阅读邮件列表条目,并尝试自己编写应用程序。 事实证明,这有点令人失望,因为在 google 上...
django-admin startproject myproject django-admin startapp myapp python3 manage.py makemigrations python3 manage.py migrate python3 manage.py runserver Django是MVT框架 它负责控制器部分(控制模型与视图...
【描述】:“Django备忘单”是一份关于Python的Web框架Django的重要参考资料,旨在帮助开发者快速查阅和回顾Django的关键概念、功能以及最佳实践。这份备忘单可能涵盖了从项目设置到数据库模型,再到视图、模板和URL...
【Django备忘单——Python Web开发神器】 Django,作为一个用Python编写的高级Web框架,因其高效、安全和易用性而广受开发者喜爱。它遵循“干”(Don't Repeat Yourself)原则,旨在简化复杂的Web应用开发过程。这...
【标题】基于 Django + MySQL 实现的简单备忘录 这个项目是一个使用Python的Django框架和MySQL数据库构建的简单备忘录应用。Django是一个高级的Web开发框架,它提供了一整套工具来帮助开发者快速地构建高质量的Web...
John 的 AWS S3 / Django 备忘单 AWS.AMAZON.COM/控制台 在 chrome 中,转到 并导航到仪表板的S3部分 在存储和内容交付下单击创建存储桶 为存储桶命名并选择俄勒冈地区 打开您创建的存储桶 为"admin" 、 "media"和...
在这个"Django+vue+前后端分离备忘录小项目"中,我们主要涉及了三个关键技术:Django(一个Python开发的Web框架)、Vue.js(一个轻量级的前端JavaScript框架)以及前后端分离的设计模式。这个小项目可以作为学习这三...
【Python-基于django制作的简单财务系统】 在Python Web开发领域,Django是一个非常流行的开源框架,它提供了高效、安全且可扩展的解决方案。本项目是利用Django框架构建的一个简单财务系统,旨在帮助用户进行基本...
python毕业设计-基于Django+Mysql 实现的简单备忘录系统设计与实现+使用说明.zippython毕业设计-基于Django+Mysql 实现的简单备忘录系统设计与实现+使用说明.zip 【备注】 1、该资源内项目代码都经过测试运行成功,...
Django,Scrapy,_Twisted等一些项目的源代码阅读备忘_scode
Python+MySQL毕业设计基于Django的办公系统源码+数据库 包含以下功能: 办公信息处理:包括日常办公信息处理,业务统计数据处理和数据的定量化处理等。 文档管理:公文的准备、起草、审批、发布、下达、批转、汇报,各种...
**Django 框架简介** Django 是一个高级的 Python Web 开发框架,它遵循“DRY(Don't Repeat Yourself)”...这个备忘单可能是开发者快速查找和学习 Django 功能的宝贵资源,尤其适合初学者和有经验的开发者作为参考。
但是它的文档写得更乱…很多关键信息居然是在常见问题里面找到…记录下来备忘. 1.安装: 复制代码 代码如下: pip install django-allauth 2.配置 settings.py 复制代码 代码如下: TEMPLATE_CONTEXT_PROCESSORS = ( ...
10. 整合部署:如果是Web应用,可能会涉及前端技术(HTML、CSS、JavaScript)、后端框架(如Django、Flask、Spring Boot)以及服务器配置。 以上是对"beiwanglu.rar_备忘录代码"可能涉及的IT知识点的详细说明。具体...
python+Django+mysql+b/s 【实现功能】 (1)新建密码本:用户可以创建新的密码本来记录自己的账户与密码; (2)平台名称备忘:用户通过记录账号密码的使用平台,避免用户忘记自己账户密码在哪个平台; (3)密码...
Django REST Framework(DRF)是构建Web API的强大工具,尤其在使用Python和Django时。这个"drf-cheat-sheet"是一个实用的快速参考指南,帮助开发者快速掌握DRF的关键概念和用法。让我们深入探讨一下这个备忘单可能...
python django mysql 需求 用户:用户在软件中可管理个人账户信息、保存,修改密码 检测密码强度和生成强密码; 个人密码本功能概述 1) 新建:用户可以创建新的密码本来记录自己的账户与密码; 2) 平台名称备忘:...
django;mysql; 本次则是通过利用Python技术,搭建一款个人密码本系统,通过该系统的搭建来实现密码备忘录的功能,通过该平台能够实现对多个不同的网站的密码信息进行有效的存储,并且可以通过该系统来检测密码的...
基于python个人密码本管理系统(django) 利用Python技术,搭建一款个人密码本系统,通过该系统的搭建来实现密码备忘录的功能,通过该平台能够实现对多个不同的网站的密码信息进行有效的存储,并且可以通过该系统来...