GVKun编程网logo

Python Django删除当前对象(python中删除对象用什么语句)

10

想了解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中删除对象用什么语句)

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环境

$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 创建多表模型(详情见代码)
  #用了OneToOneFieldForeignKey,模型表的字段,后面会自定加_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注意事项(转)

Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项

 

参考:https://blog.csdn.net/weixin_40475396/article/details/82971541

 
 

1. 编码

unicode,str,bytes在python2和python3中的叫法以及相互转换,具体为:

  1. 在Python3中的str对象在Python2中叫做unicode,但 bytes 对象在Python2中叫做str,如果想得到一个文本字符串,需要在字符串之前加上前缀 u 或者decode一下。
  2. 项目中的问题:① python2项目中字符串前加的u可以去掉了,因为在python3中就是一个文本字符串,也就是str对象,②获取阿里云签名的视图函数,涉及到编码问题,需要处理
  3. 编码问题参考:https://blog.csdn.net/yanghuan313/article/details/63262477

2. Model外键

  1. python3中Model中字段的外键必须设置on_delete,一般设置为on_delete=models.DO_NOTHING,代表删除与关联内容无关
  2. 同一张表多个字段引用相同的外键需要设置related_name
  3. Model外键问题参考:https://blog.csdn.net/lht_521/article/details/80605146

3. 判断是否是匿名用户

  1. django1.8.2是is_anonymous()
  2. django2.0是is_anonymous

4. Exception

    1.  
      python2捕获异常是:
    2.  
      try:
    3.  
      Exception,e
    4.  
      pass
    5.  
       
    6.  
      python3捕获异常是:
    7.  
      try:
    8.  
      Exception as e
    9.  
      pass

     

  1. raise异常直接写字符串到异常中,例如:
    1.  
      python2:
    2.  
      raise SimpleAjaxException,''Return data should be follow the Simple Ajax Data Format'' 
    3.  
      python3:
    4.  
      raise SimpleAjaxException(''Return data should be follow the Simple Ajax Data Format'')

     

5. urls.py

  1. 静态文件收集:
    django1.8:
    url(r''^static/(?P<path>.*)$'', ''django.views.static.serve'', {''document_root'': settings.STATIC_ROOT}) 
    django2.0:
    1.  
      from django.views.static import serve 
    2.  
      url( r''^static/(?P<path>.*)$'', serve, {''document_root'': settings.STATIC_ROOT})
  2. 导入的文件时,同目录下,不能再直接import了,使用from . import **,
  3. 绝对导入相对导入参考:https://www.jianshu.com/p/5cc20b88bcf4

6. 中间件类继承

  1. django1.8.2继承的是object
  2. django2.0继承的是MiddlewareMixin,导入方法:
    from django.utils.deprecation import MiddlewareMixin

7. 字典Dict

  1. Python 3.0 内的另一个重大改变是字典内dict.iterkeys(),dict.itervalues(),dict.iteritems()方法的删除。取而代之的是:dict.keys(),dict.values(),dict.items()
  2. dict.haskey()在Python2中存在,但是在Python3中更改为contains_

8. seetings设置

  1. Django1.8.2中间件配置名称是MIDDLEWARE_CLASSES,Django2.0是MIDDLEWARE

9. 缓存问题

  1. 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密码是否一致。

  1.  
    def getattribute(self, item):
  2.  
    if item == ''getsessionauthhash'':
  3.  
       raise AttributeError
  4.  
    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类:

  1.  
    from django.contrib.auth.hashers import PBKDF2PasswordHasher
  2.  
    class CustomPBKDF2PasswordHasher(PBKDF2PasswordHasher):
  3.  
      iterations = 20000

11.附上更改过程中看到的不错的文章:

1)Python3.x新特性以及十大变化

2)Django从1.8升级到2.0注意事项

3)Django 外键ForeignKey中的on_delete

Django 之在 Python 中调用 Django 环境

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 资源集合

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 资源集合的相关信息,请在本站寻找。

本文标签: