中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站推廣目標(biāo)是什么seo整站排名

網(wǎng)站推廣目標(biāo)是什么,seo整站排名,手機(jī)網(wǎng)站和電腦網(wǎng)站開發(fā),網(wǎng)站推廣策略的控制和效果評(píng)價(jià)Model Model (模型) 簡(jiǎn)而言之即數(shù)據(jù)模型,是一個(gè)Django應(yīng)用的核心。模型不是數(shù)據(jù)本身(比如數(shù)據(jù)表里的數(shù)據(jù)), 而是抽象的描述數(shù)據(jù)的構(gòu)成和邏輯關(guān)系。 每個(gè)Django的模型(model)實(shí)際上是個(gè)類,繼承了models.Model。每個(gè)Model應(yīng)該包括屬性(字段)&…

Model

Model (模型) 簡(jiǎn)而言之即數(shù)據(jù)模型,是一個(gè)Django應(yīng)用的核心。模型不是數(shù)據(jù)本身(比如數(shù)據(jù)表里的數(shù)據(jù)), 而是抽象的描述數(shù)據(jù)的構(gòu)成和邏輯關(guān)系。

每個(gè)Django的模型(model)實(shí)際上是個(gè)類,繼承了models.Model。每個(gè)Model應(yīng)該包括屬性(字段),關(guān)系(比如單對(duì)單,單對(duì)多和多對(duì)多)和方法。當(dāng)你定義好Model模型后,Django的接口會(huì)自動(dòng)幫你在數(shù)據(jù)庫生成相應(yīng)的數(shù)據(jù)表(table)。

模型的組成

一個(gè)標(biāo)準(zhǔn)的Django模型分別由模型字段、META選項(xiàng)和方法三部分組成。我們接下來對(duì)各部分進(jìn)行詳細(xì)介紹。Django官方編碼規(guī)范建議按如下方式排列:

  • 定義的模型字段:包括基礎(chǔ)字段和關(guān)系字段
  • 自定義的Manager方法:改變模型
  • class Meta選項(xiàng): 包括排序、索引等等(可選)。
  • def str():定義單個(gè)模型實(shí)例對(duì)象的名字(可選)。
  • def save():重寫save方法(可選)。
  • def get_absolute_url():為單個(gè)模型實(shí)例對(duì)象生成獨(dú)一無二的url(可選)
  • 其它自定義的方法

模型的字段

models.Model提供的常用模型字段包括基礎(chǔ)字段和關(guān)系字段。

基礎(chǔ)字段

CharField()

from django.db import modelsclass MyModel(models.Model):my_char_field = models.CharField(max_length=100)
  • max_length:必填參數(shù),用于限定字段可以存儲(chǔ)的字符的最大長(zhǎng)度。
  • blank:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則該字段允許為空。
  • null:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則 Django 在數(shù)據(jù)庫中使用 NULL 來存儲(chǔ)空值。
  • default:字段的默認(rèn)值。
  • editable:布爾值,默認(rèn)為 True。如果設(shè)置為 False,這個(gè)字段將不會(huì)在 Django 管理界面或者任何 ModelForm 中顯示。
  • help_text:用于在表單字段旁邊顯示額外的幫助文本。
  • verbose_name:為字段設(shè)置一個(gè)人類可讀的名字。

TextField()

from django.db import modelsclass MyModel(models.Model):my_text_field = models.TextField()
  • 適合大量文本,max_length = xxx選項(xiàng)可選。
  • blank:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則該字段允許為空。
  • null:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則 Django 在數(shù)據(jù)庫中使用 NULL 來存儲(chǔ)空值。
  • default:字段的默認(rèn)值。
  • editable:布爾值,默認(rèn)為 True。如果設(shè)置為 False,這個(gè)字段將不會(huì)在 Django 管理界面或者任何 ModelForm 中顯示。
  • help_text:用于在表單字段旁邊顯示額外的幫助文本。
  • verbose_name:為字段設(shè)置一個(gè)人類可讀的名字。

DateField() 和DateTimeField()

from django.db import modelsclass MyModel(models.Model):my_date_field = models.DateField()
  • DateField 用于存儲(chǔ)日期,不包括時(shí)間

  • 可通過default=xx選項(xiàng)設(shè)置默認(rèn)日期和時(shí)間。

  • 對(duì)于DateTimeField: default=timezone.now - 先要from django.utils import timezone

  • 如果希望自動(dòng)記錄一次修改日期(modified),可以設(shè)置: auto_now=True

  • 如果希望自動(dòng)記錄創(chuàng)建日期(created),可以設(shè)置auto_now_add=True

  • auto_now_add:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則當(dāng)對(duì)象首次被創(chuàng)建時(shí),字段會(huì)被設(shè)置為當(dāng)前日期。

  • auto_now:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則每次對(duì)象保存時(shí),字段會(huì)被設(shè)置為當(dāng)前日期。

  • blank:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則該字段允許為空。

  • null:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則 Django 在數(shù)據(jù)庫中使用 NULL 來存儲(chǔ)空值。

  • default:字段的默認(rèn)值。這可以是一個(gè)日期值,或者一個(gè)返回日期值的可調(diào)用對(duì)象。

  • editable:布爾值,默認(rèn)為 True。如果設(shè)置為 False,這個(gè)字段將不會(huì)在 Django 管理界面或者任何 ModelForm 中顯示。

  • help_text:用于在表單字段旁邊顯示額外的幫助文本。

  • verbose_name:為字段設(shè)置一個(gè)人類可讀的名字。

EmailField()

  • 如不是必填項(xiàng),可設(shè)置blank = True和default = ‘。一般Email用于用戶名應(yīng)該是唯一的,建議設(shè)置unique = True
  • max_length:用于限定字段可以存儲(chǔ)的字符的最大長(zhǎng)度。默認(rèn)值為 254,這是因?yàn)檫@是標(biāo)準(zhǔn)電子郵件地址的最大長(zhǎng)度。
  • blank:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則該字段允許為空。
  • null:布爾值,默認(rèn)為 False。如果設(shè)置為 True,則 Django 在數(shù)據(jù)庫中使用 NULL 來存儲(chǔ)空值。
  • default:字段的默認(rèn)值。
  • editable:布爾值,默認(rèn)為 True。如果設(shè)置為 False,這個(gè)字段將不會(huì)在 Django 管理界面或者任何 ModelForm 中顯示。
  • help_text:用于在表單字段旁邊顯示額外的幫助文本。
  • verbose_name:為字段設(shè)置一個(gè)人類可讀的名字

IntegerField()

  • IntegerField 是一個(gè)用于存儲(chǔ)整數(shù)的字段。
  • 它適用于那些需要存儲(chǔ)整數(shù)的地方,比如年齡、數(shù)量等。
  • 在數(shù)據(jù)庫層面,通常對(duì)應(yīng)于整數(shù)類型。

SlugField()

  • SlugField 是一個(gè)用于存儲(chǔ)“slug”的字符串字段,通常用于URLs。
  • “Slug”是一個(gè)短標(biāo)簽,通常只包含字母、數(shù)字、下劃線或連字符,用于提高URL的可讀性。
  • 它默認(rèn)最大長(zhǎng)度為50個(gè)字符,并且可以用max_length參數(shù)自定義。
  • 通常,SlugField會(huì)有一個(gè)unique_for_date參數(shù),用于確保在給定日期范圍內(nèi)slug的唯一性。

URLField()

  • URLField 是一個(gè)用于存儲(chǔ)URL的字符串字段。
  • 它默認(rèn)最大長(zhǎng)度為200個(gè)字符,也可以用max_length參數(shù)自定義。
  • 在數(shù)據(jù)庫層面,它通常對(duì)應(yīng)于一個(gè)VARCHAR字段。

BooleanField()

  • BooleanField 是一個(gè)用于存儲(chǔ)布爾值(True/False)的字段。
  • 它通常用于表示“是/否”或“開/關(guān)”這樣的二值狀態(tài)。
  • 在數(shù)據(jù)庫層面,通常對(duì)應(yīng)于一個(gè)布爾類型。

FileField()

FileField(upload_to=None, max_length=100) - 文件字段

  • upload_to = “/some folder/”:上傳文件夾路徑

  • max_length = xxxx:文件最大長(zhǎng)度

ImageField()

ImageField (upload_to=None, max_length=100,)- 圖片字段

  • upload_to = “/some folder/”: 指定上傳圖片路徑

關(guān)系字段

OneToOneField()

OneToOneField(to, on_delete=xxx, options) - 單對(duì)單關(guān)系

  • to必需指向其他模型

  • 必需指定on_delete選項(xiàng)(刪除選項(xiàng)): i.e, “on_delete =

  • models.CASCADE” or “on_delete = models.SET_NULL” .

  • 可以設(shè)置 “related_name = xxx” 便于反向查詢。

ForeignKey()

ForeignKey(to, on_delete=xxx, options) - 單對(duì)多關(guān)系

  • to必需指向其他模型.

  • 必需指定on_delete選項(xiàng)(刪除選項(xiàng)): i.e, “on_delete = models.CASCADE” or “on_delete = models.SET_NULL” .

  • 可以設(shè)置”default = xxx” or “null = True” ;

  • 如果有必要,可以設(shè)置 “l(fā)imit_choices_to = “,

  • 可以設(shè)置 “related_name = xxx” 便于反向查詢。

ManyToManyField()

ManyToManyField(to, options) - 多對(duì)多關(guān)系

  • to 必需指向其他模型,比如 User or ‘self’ .
  • 設(shè)置 “symmetrical = False “ 表示多對(duì)多關(guān)系不是對(duì)稱的,比如A關(guān)注B不代表B關(guān)注A
  • 設(shè)置 “through = ‘intermediary model’ “ 如果需要建立中間模型來搜集更多信息。
  • 可以設(shè)置 “related_name = xxx” 便于反向查詢。

對(duì)于OneToOneField和ForeignKey, on_delete選項(xiàng)和related_name是兩個(gè)非常重要的設(shè)置,前者決定了了關(guān)聯(lián)外鍵刪除方式,后者決定了模型反向查詢的名字。

on_delete刪除選項(xiàng)

Django提供了如下幾種關(guān)聯(lián)外鍵刪除選項(xiàng), 可以根據(jù)實(shí)際需求使用。

  • CASCADE:級(jí)聯(lián)刪除。當(dāng)你刪除publisher記錄時(shí),與之關(guān)聯(lián)的所有都會(huì)被刪除。
  • PROTECT: 保護(hù)模式。如果有外鍵關(guān)聯(lián),就不允許刪除,刪除的時(shí)候會(huì)拋出ProtectedError錯(cuò)誤,除非先把關(guān)聯(lián)了外鍵的記錄刪除掉。
  • SET_NULL: 置空模式。刪除的時(shí)候,外鍵字段會(huì)被設(shè)置為空。
  • SET_DEFAULT: 置默認(rèn)值,刪除的時(shí)候,外鍵字段設(shè)置為默認(rèn)值。
  • SET(): 自定義一個(gè)值。
  • DO_NOTHING:什么也不做。刪除不報(bào)任何錯(cuò),外鍵值依然保留,但是無法用這個(gè)外鍵去做查詢

related_name選項(xiàng)

  • related_name 選項(xiàng)用于指定從相關(guān)模型反向引用時(shí)的名稱。這個(gè)選項(xiàng)允許你從一個(gè)關(guān)系的“另一邊”引用對(duì)象,而不必直接通過模型的字段名。
from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)class Book(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')

在這個(gè)例子中,Book 模型有一個(gè)指向 Author 模型的 ForeignKey。通過設(shè)置 related_name=‘books’,我們可以在 Author 實(shí)例上使用 books 屬性來獲取所有與之相關(guān)的 Book 實(shí)例。

重要特性

如果沒有指定 related_name,Django 會(huì)自動(dòng)創(chuàng)建一個(gè)默認(rèn)的名稱,格式為 <model_name>_set,其中 <model_name> 是關(guān)系的另一端的模型的小寫名稱(例如,如果 Book 模型有一個(gè)指向 Author 的 ForeignKey,默認(rèn)的 related_name 將是 book_set)。

如果你的模型被用于多個(gè) ForeignKey 或 ManyToManyField,為每個(gè)關(guān)系指定一個(gè)唯一的 related_name 是一個(gè)好的實(shí)踐,這樣可以避免命名沖突。

如果你不希望為關(guān)系創(chuàng)建反向名稱,可以將 related_name 設(shè)置為 ‘+’ 或者 None(在 Django 1.9 及以后版本中)。

示例

class Author(models.Model):name = models.CharField(max_length=100)class Book(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='publications')class Article(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='articles')

在這個(gè)例子中,Author 可以通過 publications 屬性獲取其所有的 Book 實(shí)例,通過 articles 屬性獲取其所有的 Article 實(shí)例。

使用 related_name:

author = Author.objects.get(name="Jane Doe")
author_books = author.publications.all()  # 獲取所有與Jane Doe相關(guān)的書籍
author_articles = author.articles.all()   # 獲取所有與Jane Doe相關(guān)的文章

如果不使用 related_name:

author_books = Book.objects.filter(author=author)  # 使用默認(rèn)的related_name
author_articles = Article.objects.filter(author=author)  # 使用默認(rèn)的related_name

模型的META選項(xiàng)

在 Django 中,每個(gè)模型都有一個(gè)內(nèi)部類叫做 Meta,它用于包含模型的元數(shù)據(jù),即關(guān)于模型自身的配置信息。這些元數(shù)據(jù)不會(huì)直接轉(zhuǎn)換為數(shù)據(jù)庫字段,但它們會(huì)影響模型的行為,尤其是在數(shù)據(jù)庫層面和 Django 管理界面中的表現(xiàn)。

以下是一些常用的 Meta 選項(xiàng)及其用途:

abstract

類型:布爾值
默認(rèn)值:False
用途:如果設(shè)置為 True,則模型會(huì)被視為抽象基類,不會(huì)創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫表。

app_label

類型:字符串
用途:指定模型所屬的應(yīng)用的名稱。通常不需要設(shè)置,因?yàn)?Django 會(huì)自動(dòng)確定。

db_table

類型:字符串
用途:指定模型在數(shù)據(jù)庫中對(duì)應(yīng)的表名。如果不設(shè)置,Django 會(huì)自動(dòng)生成表名,格式為 <app_label>_<model_name>。

db_tablespace

類型:字符串
用途:指定模型使用的數(shù)據(jù)庫表空間。如果數(shù)據(jù)庫支持表空間,這個(gè)選項(xiàng)可以用來指定模型表應(yīng)該使用的表空間。

get_latest_by

類型:字符串或字段名
用途:指定一個(gè)字段名,通常是日期或時(shí)間字段,以便使用 Model.objects.latest() 方法時(shí)按照該字段排序獲取最新記錄。

managed

類型:布爾值
默認(rèn)值:True
用途:如果設(shè)置為 False,Django 不會(huì)為該模型創(chuàng)建或刪除數(shù)據(jù)庫表。這在模型映射到預(yù)先存在的數(shù)據(jù)庫表或是在非數(shù)據(jù)庫數(shù)據(jù)源上時(shí)很有用。

order_with_respect_to

類型:字段名
用途:用于多對(duì)多關(guān)系,允許對(duì)象根據(jù)指定的字段進(jìn)行排序。

ordering

類型:字符串或字段列表
用途:指定對(duì)象默認(rèn)的排序方式。例如,[‘name’] 表示按照 name 字段的升序排序。

permissions

類型:二元組列表
用途:為模型添加額外的權(quán)限。每個(gè)元組應(yīng)該包含兩個(gè)元素:權(quán)限代碼和人類可讀的權(quán)限名稱。

proxy

類型:布爾值
默認(rèn)值:False
用途:如果設(shè)置為 True,則模型會(huì)被視為代理模型。它將繼承其父模型的字段,但不會(huì)創(chuàng)建新的數(shù)據(jù)庫表。

unique_together

類型:字段名列表的列表
用途:指定字段組合的唯一性約束。例如,unique_together = [(‘username’, ‘email’)] 表示 username 和 email 的組合必須是唯一的。

verbose_name

類型:字符串
用途:為模型設(shè)置一個(gè)人類可讀的單數(shù)名稱。

verbose_name_plural

類型:字符串
用途:為模型的復(fù)數(shù)名稱設(shè)置一個(gè)人類可讀的名稱。

以下是一個(gè)包含 Meta 類的模型示例:

from django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=50)last_name = models.CharField(max_length=50)class Meta:ordering = ['last_name']verbose_name_plural = "people"

模型的方法

在 Django 中,模型不僅僅是數(shù)據(jù)庫表的簡(jiǎn)單映射;它們也是具有行為的 Python 對(duì)象。你可以為模型添加自定義的方法來執(zhí)行各種操作,比如計(jì)算字段值、處理相關(guān)對(duì)象,或者執(zhí)行任何其他需要的業(yè)務(wù)邏輯。

以下是一些常見類型的模型方法及其用途:

自定義管理器方法

雖然不是直接在模型上定義的,但管理器方法是模型中經(jīng)常使用的方法。它們?cè)试S你對(duì)查詢集進(jìn)行自定義操作。

from django.db import modelsclass BookManager(models.Manager):def title_count(self, keyword):return self.filter(title__icontains=keyword).count()class Book(models.Model):title = models.CharField(max_length=100)objects = BookManager()# 使用自定義管理器方法
book_count = Book.objects.title_count('django')

自定義實(shí)例方法

這些方法通常用于處理單個(gè)模型實(shí)例。

class Author(models.Model):name = models.CharField(max_length=100)books = models.ManyToManyField(Book)# book_count 方法返回與特定作者相關(guān)的書籍?dāng)?shù)量。def book_count(self):return self.books.count()

自定義類方法

類方法與實(shí)例方法不同,因?yàn)樗鼈儾恍枰囟ǖ膶?shí)例來調(diào)用。它們可以用來返回查詢集或者執(zhí)行與特定實(shí)例無關(guān)的操作。

class Book(models.Model):title = models.CharField(max_length=100)published_date = models.DateField()#recent_books 類方法返回最近30天內(nèi)發(fā)布的書籍。@classmethoddef recent_books(cls):return cls.objects.filter(published_date__gte=datetime.now() - timedelta(days=30))

自定義靜態(tài)方法

靜態(tài)方法不依賴于類或?qū)嵗臓顟B(tài)。它們用于執(zhí)行一些不訪問任何屬性或方法的操作。

class Book(models.Model):title = models.CharField(max_length=100)
#is_valid_title 靜態(tài)方法檢查給定的標(biāo)題是否有效。@staticmethoddef is_valid_title(title):return len(title) > 0

保存和刪除鉤子

Django 提供了 save 和 delete 方法的鉤子,你可以在這些方法中添加自定義邏輯。

class Book(models.Model):title = models.CharField(max_length=100)def save(self, *args, **kwargs):do_something_before_save()super(Book, self).save(*args, **kwargs)do_something_after_save()def delete(self, *args, **kwargs):do_something_before_delete()super(Book, self).delete(*args, **kwargs)do_something_after_delete()

以下是一個(gè)綜合了上述方法的模型示例:

from django.db import models
from datetime import datetime, timedeltaclass Author(models.Model):name = models.CharField(max_length=100)def get_books(self):return self.book_set.all()class Book(models.Model):title = models.CharField(max_length=100)authors = models.ManyToManyField(Author)published_date = models.DateField()def was_published_recently(self):return self.published_date >= datetime.now() - timedelta(days=30)@classmethoddef get_recent_books(cls):return cls.objects.filter(published_date__gte=datetime.now() - timedelta(days=30))def save(self, *args, **kwargs):if not self.title:raise ValueError("Book must have a title.")super(Book, self).save(*args, **kwargs)
http://www.risenshineclean.com/news/27588.html

相關(guān)文章:

  • 如何做網(wǎng)站商城怎么開設(shè)自己的網(wǎng)站
  • 做網(wǎng)站的困難海淀區(qū)seo搜索優(yōu)化
  • 昆明做網(wǎng)站最好的小說網(wǎng)站排名
  • wordpress 8211如何優(yōu)化網(wǎng)絡(luò)速度
  • 部門網(wǎng)站建設(shè)存在的問題優(yōu)化大師免費(fèi)版下載
  • 做論壇網(wǎng)站的cms網(wǎng)絡(luò)廣告策劃方案
  • 西安做網(wǎng)站的seo三人行論壇
  • 11號(hào)在線 網(wǎng)站開發(fā)廣州seo推薦
  • 沒有備案的網(wǎng)站可以用ip訪問嗎智能營(yíng)銷方法
  • 海淀視頻網(wǎng)站建設(shè)搜索引擎調(diào)詞工具哪個(gè)好
  • 杭州電子商務(wù)公司排行seo推廣外包報(bào)價(jià)表
  • 做網(wǎng)站公司在哪電子商務(wù)沙盤seo關(guān)鍵詞
  • 設(shè)計(jì)網(wǎng)站賣錢企業(yè)網(wǎng)站模板源碼
  • 邯鄲網(wǎng)站制作找誰衡陽seo優(yōu)化報(bào)價(jià)
  • 怎么做網(wǎng)站推銷產(chǎn)品58同城安居客
  • 修改WordPress網(wǎng)站中國(guó)萬網(wǎng)域名注冊(cè)免費(fèi)
  • 平面設(shè)計(jì)圖網(wǎng)站線下推廣方式
  • 阿里云官方網(wǎng)站百度關(guān)鍵詞規(guī)劃師入口
  • 免費(fèi)交友網(wǎng)站模板精準(zhǔn)信息300099
  • 織夢(mèng)禁止網(wǎng)站右擊網(wǎng)站推廣
  • 做網(wǎng)站賺錢難網(wǎng)站制作流程是什么
  • 杭州建站價(jià)格成功品牌策劃案例
  • 手機(jī)網(wǎng)站建設(shè)開發(fā)搜索引擎大全網(wǎng)址
  • 簡(jiǎn)單的企業(yè)小網(wǎng)站網(wǎng)站設(shè)計(jì)制作一條龍
  • 武漢做網(wǎng)站報(bào)價(jià)山西網(wǎng)絡(luò)推廣
  • 衢州網(wǎng)站建設(shè)費(fèi)用教育機(jī)構(gòu)培訓(xùn)
  • 我的網(wǎng)站首頁打不開b站2023年免費(fèi)入口
  • 住房和城鄉(xiāng)建設(shè)部網(wǎng)站報(bào)名瀏覽器打開
  • 新鄉(xiāng)住房與城鄉(xiāng)建設(shè)廳網(wǎng)站網(wǎng)站推廣營(yíng)銷
  • 智聯(lián)招聘網(wǎng)站怎么做兩份簡(jiǎn)歷360優(yōu)化大師軟件