电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Django 解決阿里云部署同步數據庫報錯的問題

瀏覽:132日期:2024-10-07 10:39:26

寫在最前面:

在阿里云租了一臺服務器,搭建了一個博客,采用的是Ubuntu+Django+uwsgi+nginx+mysql的結構。

運行了一段時間后,我發現我忘記了django自帶后臺的密碼!

然后很常規的修改密碼的操作,就是無法登陸!

然后想再創建一個超級用戶,登上去看看什么情況,結果創建超級用戶又報錯?

可是本地環境是ok的,然后同步數據庫出錯。。。反正沒有對的。

然后同步數據庫報錯如下:

Django 解決阿里云部署同步數據庫報錯的問題

手機端截的圖,查了一下報錯,應該是setting.py的配置問題,然后我把生產上的代碼拿下來看了下。

如下:

STATIC_URL = ’/static/’STATIC_ROOT = os.path.join(BASE_DIR, ’static’)STATICFILES_DIRS = ( os.path.join(BASE_DIR, ’static’), #os.path.join(os.path.dirname(__file__), ’../static/’).replace(’’, ’/’),)

這里要注意,STATIC_ROOT和STATICFILES_DIRS只要配置一個就可以!

如果非要同時配置

請將

STATIC_ROOT = os.path.join(BASE_DIR, ’static’)

改為

STATIC_ROOT = os.path.join(BASE_DIR, ’/static/’)

然后同步數據庫

接下來創建超級用戶也沒有問題了

登錄到admin后臺一看,原來的那個賬號權限被關了。。。怪不得怎么修改密碼都沒有用。

有空會詳細講講我在阿里云部署Django的過程。

補充知識:django2.0 foreignKey提示on_delete

據說在django2.0之前創建外鍵foreignKey的參數on_delete是有默認值的,所以這個參數可以不用填,但在2.0之后on_delete沒有默認值了,所以這個參數一定要傳,不然就報以下的錯:

TypeError: __init__() missing 1 required positional argument: on_delete

所以現在就來說一下關于這個on_delete要傳的參數所代表的含義

on_delete=None, # 刪除關聯表中的數據時,當前表與其關聯的field的行為

on_delete=models.CASCADE, # 刪除關聯數據,與之關聯也刪除

on_delete=models.DO_NOTHING, # 刪除關聯數據,什么也不做

on_delete=models.PROTECT, # 刪除關聯數據,引發錯誤ProtectedError

# models.ForeignKey(’關聯表’, on_delete=models.SET_NULL, blank=True, null=True)

on_delete=models.SET_NULL, # 刪除關聯數據,與之關聯的值設置為null(前提FK字段需要設置為可空,一對一同理)

# models.ForeignKey(’關聯表’, on_delete=models.SET_DEFAULT, default=’默認值’)

on_delete=models.SET_DEFAULT, # 刪除關聯數據,與之關聯的值設置為默認值(前提FK字段需要設置默認值,一對一同理)

on_delete=models.SET, # 刪除關聯數據,

a. 與之關聯的值設置為指定值,設置:models.SET(值)

b. 與之關聯的值設置為可執行對象的返回值,設置:models.SET(可執行對象)

例,創建一對多外鍵

class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Model): user = models.CharField(max_length=32) email = models.EmailField() user_type = models.ForeignKey(to='UserType',to_field='id',on_delete=models.CASCADE)

創建外鍵后,直接用models.xxxx.objects.create()創建數據時需要注意,外鍵這個值需要傳關聯表的對象,如下:

class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Model): user = models.CharField(verbose_name=’用戶’, max_length=32) email = models.EmailField() user_type = models.ForeignKey(to='UserType',to_field='id',on_delete=models.CASCADE)-----------上面是的是在models.py,下面的是在views.py-------------def test(requset): ut = models.UserType.objects.filter(id=1).first() #print(ut) models.UserInfo.objects.create(user=’小明’,email=’abc@163.com’,user_type=ut) return HttpResponse(’ok’)

一對多的繼承代碼:

class ForeignKey(ForeignObject): def __init__(self, to, on_delete, related_name=None, related_query_name=None, limit_choices_to=None, parent_link=False, to_field=None, db_constraint=True, **kwargs): super().__init__(to, on_delete, from_fields=[’self’], to_fields=[to_field], **kwargs)

創建一對一

OneToOneField(ForeignKey) to, # 要進行關聯的表名 to_field=None # 要關聯的表中的字段名稱 on_delete=None, # 當刪除關聯表中的數據時,當前表與其關聯的行的行為 ###### 對于一對一 ###### # 1. 一對一其實就是 一對多 + 唯一索引 # 2.當兩個類之間有繼承關系時,默認會創建一個一對一字段 # 如下會在A表中額外增加一個c_ptr_id列且唯一:class C(models.Model):nid = models.AutoField(primary_key=True)part = models.CharField(max_length=12) class A(C):id = models.AutoField(primary_key=True)code = models.CharField(max_length=1)

一對一的繼承代碼:

class OneToOneField(ForeignKey): def __init__(self, to, on_delete, to_field=None, **kwargs): kwargs[’unique’] = True super().__init__(to, on_delete, to_field=to_field, **kwargs)

創建多對多

方式一:自定義關系表

class Host(models.Model): nid = models.AutoField(primary_key=True) hostname = models.CharField(max_length=32,db_index=True) ip = models.GenericIPAddressField(protocol='ipv4',db_index=True) port = models.IntegerField() b = models.ForeignKey(to='Business', to_field=’id’) # 10class Application(models.Model): name = models.CharField(max_length=32) # 2 class HostToApp(models.Model): hobj = models.ForeignKey(to=’Host’,to_field=’nid’) aobj = models.ForeignKey(to=’Application’,to_field=’id’) # HostToApp.objects.create(hobj_id=1,aobj_id=2)這里可以直接對第三張表直接操

方式二:自動創建關系表

class Host(models.Model): nid = models.AutoField(primary_key=True) hostname = models.CharField(max_length=32,db_index=True) ip = models.GenericIPAddressField(protocol='ipv4',db_index=True) port = models.IntegerField() b = models.ForeignKey(to='Business', to_field=’id’) # 10class Application(models.Model): name = models.CharField(max_length=32) r = models.ManyToManyField('Host') --------------> appname_application_r 表名

無法直接對第三張表進行操作

只能間接操作————————————————————

obj = models.Application.objects.get(id=1)obj.name # 第三張表操作:HostToApp table 基于id=1的Application添加對應關系obj.r.add(1)增obj.r.add(2)obj.r.add(2,3,4)obj.r.add(*[1,2,3,4]) obj.r.remove(1) 刪obj.r.remove(2,4)obj.r.remove(*[1,2,3]) obj.r.clear() 清除app_id =1 的列 obj.r.set([3,5,7]) 改set將原來數據庫中的關系先全部刪除,在添加1-3,1-5,1-7——————————————————————————# 所有相關的主機對象“列表” QuerySetobj.r.all() obj.filter() obj.first()

前端取

{%for app in app_list%} <tr> <td>{{app.name}}</td> <td>{{app.r.all}}</td> </tr> {%endfor%}

多對多的繼承代碼:

class ManyToManyField(RelatedField): def __init__(self, to, related_name=None, related_query_name=None, limit_choices_to=None, symmetrical=None, through=None, through_fields=None, db_constraint=True, db_table=None, swappable=True, **kwargs): super().__init__(**kwargs)

以上這篇Django 解決阿里云部署同步數據庫報錯的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: SMC-ASCO-CKD气缸-FESTO-MAC电磁阀-上海天筹自动化设备官网 | 999范文网_优质范文下载写作帮手| 陕西自考报名_陕西自学考试网 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 安徽泰科检测科技有限公司【官方网站】 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 踏板力计,制动仪,非接触多功能速度仪,逆反射系数测试仪-创宇 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 上海深蓝_缠绕机_缠膜机-上海深蓝机械装备有限公司 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 黑田精工电磁阀-CAMMOZI气缸-ROSS电磁-上海茂硕机械设备有限公司 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 2025第九届世界无人机大会 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 |