想了解PythonDjango删除当前对象的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python中删除对象用什么语句的相关问题,此外,我们还将为您介绍关于$Django多表操作(增删改
想了解Python Django删除当前对象的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python中删除对象用什么语句的相关问题,此外,我们还将为您介绍关于$Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境、Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)、Django 之在 Python 中调用 Django 环境、Django.GitHub Python 网页框架 Django 资源集合的新知识。
本文目录一览:- Python Django删除当前对象(python中删除对象用什么语句)
- $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
- Django 之在 Python 中调用 Django 环境
- Django.GitHub Python 网页框架 Django 资源集合
Python Django删除当前对象(python中删除对象用什么语句)
案例我在/ notes / get / 1 /中,其中id =1,并且我在note.html中创建了“删除注释”链接。我需要它从数据库和应用程序中删除
当前 注释,然后重定向到/ notes / all。您能帮我处理def delete中的代码吗?
models.py:
class Note(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
cr_date = models.DateTimeField(auto_now_add=True)
urls.py:
urlpatterns = patterns('',url(r'^all/$','note.views.notes'),url(r'^get/(?P<note_id>\d+)/$','note.views.note'),#
url(r'^language/(?P<language>[a-z\-]+)/$','note.views.language'),#
url(r'^create/$','note.views.create'),url(r'^delete/$','note.views.delete'),<--------------------------
url(r'^search/$','note.views.search_titles'),)
views.py:
def delete(??????):
????? <-------------------------------------------
return HttpResponseRedirect('/notes/all')
$Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境
0在Python脚本中调用Django环境、
import os
if __name__ == ''__main__'':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "工程名.settings")
import django
django.setup()
from app01 import models
1 创建多表模型(详情见代码)
#用了OneToOneField和ForeignKey,模型表的字段,后面会自定加_id
class Zuozhe (models.Model):
id = models.AutoField (primary_key=True)
name = models.CharField (max_length=32)
xiang = models.OneToOneField (to=''Xiang'', to_field=''id'')
# ManyToManyField会自动创建第三张表:格式如下
class Zuozhe (models.Model):
id = models.AutoField (primary_key=True)
class Books (models.Model):
id = models.AutoField (primary_key=True)
name = models.CharField (max_length=32)
price = models.DecimalField (max_digits=5, decimal_places=2)
banse = models.ForeignKey (to=Banse, to_field=''id'')
zuozhe = models.ManyToManyField (to=''Zuozhe'')
# *************重点
# 一对一的关系:OneToOneField
# 一对多的关系:ForeignKey
# 多对多的关系:ManyToManyField
2 添加表记录
1 一对多create
-两种方式:
-publish=对象 #创建时的字段=对象
-publish_id=id #数据库里的实际字段=id
models.Book.objects.create(name=''红楼梦'',price=34.5,publish_id=1)
publish=models.Publish.objects.get (pk=1)
models.Book.objects.create (name=''西游记'', price=34.5, publish=publish)
2 一对多删除:同单表删除 delete()
3 一对多修改:两种方式,可以传对象,可以传id, update()
4 一对一跟一对多一样
5 多对多: 注意这里是拿到对象在 增删改
-add ----->可以传对象,可以传id,可以传多个
# book=models.Books.objects.filter(name=''添加1'').first()
# book.zuozhe.add(1,2)
-remove ----->可以传对象,可以传id,可以传多个
-clear ---->没有参数
-set 修改 ----->必须传可迭代对象(一般列表),列表里面可以是对象,可以是id (举例:这本书的作者,set([1,2,3] 表里有就不改动了,没有添加,这本书之前的其他作者删除))
book=models.Books.objects.filter(name=''添加1'').first()
book.zuozhe.set ([3, 2, 1])
3 基于对象的跨表查询: 对象。跨表/跨表_set--->object对象 | None | None。all() 拿到一个queryset对象
1 一对一 :没有all,没_set
正向:正向查询按字段
# lqz=models.Zuozhe.objects.filter(name=''lqz'').first()
# print(lqz.xiang.address)
反向:反向查询按表名小写
# phone=models.Xiang.objects.filter(phone=''120'').first()
# print(phone.zuozhe.name)
2 一对多
正向:正向查询按字段
反向:反向按表名小写_set.all()
3 多对多
正向:正向查询按字段
# book=models.Books.objects.filter(name=''水浒传'').first()
# print(book.zuozhe.all())
# for i in book.zuozhe.all():
# print(i.name)
反向查询:反向按表名小写_set.all()
lqz=models.Zuozhe.objects.filter(name=''lqz'').first()
pp=lqz.books_set.all()
print(pp)
for i in pp :
print(i.name)
4******基于对象的查询,多次查询(子查询)
总结: 多个.all()或者小写表名_set.all()
4 基于双下划线的跨表查询
-连表查询
-一对一双下划线查询
-正向:按字段,跨表可以在filter,也可以在values中
-反向:按表名小写,跨表可以在filter,也可以在values中
# models.Books.objects.filter(name__startswith=''红'').values(''zuozhe__xiang__address'').filter(zuozhe__xiang__address__startswith=''北'').values(''zuozhe__xiang__sex'')
5.修改
models.User.objects.filter(id=1).update(name=''wd'')
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项
参考:https://blog.csdn.net/weixin_40475396/article/details/82971541
1. 编码
unicode,str,bytes在python2和python3中的叫法以及相互转换,具体为:
- 在Python3中的str对象在Python2中叫做unicode,但 bytes 对象在Python2中叫做str,如果想得到一个文本字符串,需要在字符串之前加上前缀 u 或者decode一下。
- 项目中的问题:① python2项目中字符串前加的u可以去掉了,因为在python3中就是一个文本字符串,也就是str对象,②获取阿里云签名的视图函数,涉及到编码问题,需要处理
- 编码问题参考:https://blog.csdn.net/yanghuan313/article/details/63262477
2. Model外键
- python3中Model中字段的外键必须设置on_delete,一般设置为
on_delete=models.DO_NOTHING
,代表删除与关联内容无关 - 同一张表多个字段引用相同的外键需要设置related_name
- Model外键问题参考:https://blog.csdn.net/lht_521/article/details/80605146
3. 判断是否是匿名用户
- django1.8.2是is_anonymous()
- django2.0是is_anonymous
4. Exception
-
-
python2捕获异常是:
-
try:
-
Exception,e
-
pass
-
-
python3捕获异常是:
-
try:
-
Exception as e
-
pass
-
- raise异常直接写字符串到异常中,例如:
-
python2:
-
raise SimpleAjaxException,''Return data should be follow the Simple Ajax Data Format''
-
python3:
-
raise SimpleAjaxException(''Return data should be follow the Simple Ajax Data Format'')
-
5. urls.py
- 静态文件收集:
django1.8:
django2.0:url(r''^static/(?P<path>.*)$'', ''django.views.static.serve'', {''document_root'': settings.STATIC_ROOT})
-
from django.views.static import serve
-
url( r''^static/(?P<path>.*)$'', serve, {''document_root'': settings.STATIC_ROOT})
-
- 导入的文件时,同目录下,不能再直接import了,使用from . import **,
- 绝对导入相对导入参考:https://www.jianshu.com/p/5cc20b88bcf4
6. 中间件类继承
- django1.8.2继承的是object
- django2.0继承的是MiddlewareMixin,导入方法:
from django.utils.deprecation import MiddlewareMixin
7. 字典Dict
- Python 3.0 内的另一个重大改变是字典内dict.iterkeys(),dict.itervalues(),dict.iteritems()方法的删除。取而代之的是:dict.keys(),dict.values(),dict.items()
- dict.haskey()在Python2中存在,但是在Python3中更改为contains_
8. seetings设置
- Django1.8.2中间件配置名称是MIDDLEWARE_CLASSES,Django2.0是MIDDLEWARE
9. 缓存问题
- Python2和Python3对换错的哈希方式不同,上线的时候最好是把缓存清一下。
Bug:上线Python3,因为用户系统问题,上线失败,退回到Python2,此时因为有Python3的缓存,而版本是Python2的版本,导致报错。
解决方式:清除缓存。
10. 用户系统问题
如果两个项目共用一个用户系统,Django2.0项目的用户在登陆状态,如果此时Django1.8项目登陆此用户,再次刷新Django2.0项目的此用户,就需要重新登录。
此问题是因为Django1.8和2.0中间件对哈希的密码校验问题不同导致的request请求时,对象中的 session_id
消失,最终导致数据库中session被清除,目前能暂时解决,绕过这个问题,尚未找到根本原因。
解决办法:
1)在用户表的Model里面添加方法,相当于撤回到python2的验证机制,强制绕过这个登陆时校验密码hash之后跟缓存中的hash密码是否一致。
-
def getattribute(self, item):
-
if item == ''getsessionauthhash'':
-
raise AttributeError
-
return super().getattribute_(item)
2) 回归到第一条,校验用户时,对密码hash,是通过一个固定的值加密码hash的,django1.8和2.0这个固定的值不同,导致密码hash之后跟缓存中的hash密码不一致,如果将不同版本的这个值设为相同的话,就ok了,其实settings.py里面就可以设置,只是不同版本有默认值,就没有在显示设置。如下:
PASSWORD_HASHERS = [ ''core.hasher.CustomPBKDF2PasswordHasher'']
然后再相对于的路径创建文件重写类:比如上面就是在core文件夹下的hasher.py文件重写CustomPBKDF2PasswordHasher类:
-
from django.contrib.auth.hashers import PBKDF2PasswordHasher
-
class CustomPBKDF2PasswordHasher(PBKDF2PasswordHasher):
-
iterations = 20000
11.附上更改过程中看到的不错的文章:
1)Python3.x新特性以及十大变化
2)Django从1.8升级到2.0注意事项
3)Django 外键ForeignKey中的on_delete
Django 之在 Python 中调用 Django 环境
Django 之在 Python 中调用 Django 环境
新建一个 py 文件,在其中写下如下代码:
1 import os
2
3 if __name__ == ''__main__'':
4 os.environ.setdefault(''DJANGO_SETTINGS_MODULE'', ''BMS.settings'')
5
6 import django
7
8 django.setup()
9
10
11 ---------------------------------------
12 # 内容区
Django.GitHub Python 网页框架 Django 资源集合
模块相关:
Channels
简介: Channels 旨在增强 Django 的异步能力,同时让 Django 不仅仅局限于 Request-Response 模型,能够支持 WebSocket,HTTP2 推送和背景任务.
Django-Baker
简介: Django Baker 可以帮助开发者快速启动项目。只要提供 app 名称,Django Baker 就可以根据 models.py 文件中的 models, 自动生成视图,表单,URL,admin 页面以及模板.
Django-Q
简介: Django Q 是一个原生 Django 分布式任务队列处理应用,通过 Python 的 mutliprocessing 模块功能实现.
django-webpack-loader
简介: Django webpack loader 对 webpack-bundle-tracker 的输出结果进行处理,让你可以在自己的 Django 应用中使用生成的 bundles
django-hackathon-starter
简介: django-hackathon-starter 这是一个 Django Web 应用模板程序,可以帮助你快速生成应用,必定能够为你节省大量的开发时间,同时这个库也能用作开发者的学习指南.
django-seed
简介: Django-seed 通过 faker 库,为 Django 模型生成测试数据,该库支持 Python 和 Django 的最新版本.
django-tenants
简介: django-tenants 让 django 驱动的网站支持多个 tenants, 这个功能是通过 PostgreSQL schemas 实现的。这是每个 SASS(软件即服务)网站的核心功能
项目相关:
OSQA
简介:一款免费且开源的问答系统,采用 Python 的 Django 开发框架,基于中国优秀的问答系统 CNProg, 非常类似国外著名的技术问答网站 http://stackoverflow.com .
io
简介: Python+Django 构建的 Blog - 基于 Python+Django 构建的 Blog io by xushvai
LibraryManagement
简介: LibraryManagement 图书管理系统 (Django1.9.1+Bootstrap3)。
CommunityManagement
简介:用 Django 基于组合模式开发的一个小型的社团管理系统。
django-shop
简介: Django 做的开源电子商务网站
weixin_market
简介:基于 mezzanine 与 django 的 web 服务器,微信商城。
deisp
简介:开源 PaaS 系统 Deis 是一个 Django/Celery API 服务器,Python CLI 和一组 Chef cookbooks 合并起来提供一个类似 Heroku 的应用平台,用于公有云和私有云
ASKBOT-devel
简介:一款免费且开源的问答系统,采用 Python 的 Django 开发
taiga-back
简介: Taiga 功能非常强大的项目管理平台。用于初创企业和敏捷开发团队,采用 Django 框架开发,前端基于 AngularJS 实现.
登录乐搏学院官网 http://www.learnbo.com/
或关注我们的官方微博微信,还有更多惊喜哦~
本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处 http://xmdevops.blog.51cto.com/11144840/1846241
关于Python Django删除当前对象和python中删除对象用什么语句的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于$Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境、Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)、Django 之在 Python 中调用 Django 环境、Django.GitHub Python 网页框架 Django 资源集合的相关信息,请在本站寻找。
本文标签: