django教程-part2

我們繼續(xù)教程1的部分開始抓韩。我們將要建立數(shù)據(jù)庫(kù),創(chuàng)建你的第一個(gè)模型连茧,并且快速簡(jiǎn)介django的自動(dòng)生成后臺(tái)管理系統(tǒng)核蘸。

數(shù)據(jù)庫(kù)設(shè)置

現(xiàn)在,打開mysite/settings.py啸驯。這是一個(gè)常規(guī)的模塊級(jí)別的變量來(lái)表示django設(shè)置的python模塊客扎。

默認(rèn)情況,配置使用的是SQLite罚斗。如果你是一個(gè)數(shù)據(jù)庫(kù)方面的新手徙鱼,或者只是對(duì)使用django感興趣,這是最簡(jiǎn)單的選擇针姿。SQLite被包含在Python中袱吆,所以你不必再進(jìn)行任何安裝來(lái)支持?jǐn)?shù)據(jù)庫(kù)。當(dāng)開始一個(gè)真正的項(xiàng)目時(shí)距淫,你可能想使用擴(kuò)展性更好的數(shù)據(jù)庫(kù)杆故,以避免開發(fā)過(guò)程中數(shù)據(jù)庫(kù)切換的痛苦,例如PostgreSQL溉愁。

如果你想用其他的數(shù)據(jù)庫(kù),安裝適當(dāng)?shù)?a target="_blank" rel="nofollow">database bindings饲趋,并且修改數(shù)據(jù)庫(kù)中’default‘項(xiàng)來(lái)匹配你的數(shù)據(jù)庫(kù)連接設(shè)置:

  • ENGINE拐揭,可以是'django.db.backends.sqlite3', 'django.db.backends.postgresql', 'django.db.backends.mysql', or 'django.db.backends.oracle',其他也是可以的奕塑,請(qǐng)看 also available堂污。
  • NAME,數(shù)據(jù)庫(kù)的名字龄砰,如果你使用的是SQLite盟猖,數(shù)據(jù)庫(kù)就是你的電腦上的一個(gè)文件,既然這樣换棚,NAME應(yīng)該是絕對(duì)路徑式镐,并包括文件名。默認(rèn)值os.path.join(BASE_DIR, 'db.sqlite3')固蚤,將會(huì)把文件存儲(chǔ)在你的項(xiàng)目目錄下娘汞。

如果你沒(méi)有使用SQLite作為你的數(shù)據(jù)庫(kù),要添加USER夕玩,PASSWORD你弦,HOST項(xiàng)配置惊豺。更多細(xì)節(jié)請(qǐng)參考文檔DATABASES

除了SQLite意外的數(shù)據(jù)庫(kù)
如果你使用除了SQLite以外的數(shù)據(jù)庫(kù)禽作,請(qǐng)確保你已經(jīng)創(chuàng)建了數(shù)據(jù)庫(kù)尸昧。可以在你的數(shù)據(jù)庫(kù)可交互命令行中旷偿,使用命令“CREATE DATABASE database_name;”烹俗。
還要確保數(shù)據(jù)庫(kù)用戶在mysite/settings.py中提供了“創(chuàng)建數(shù)據(jù)庫(kù)”的權(quán)限。在稍后的教程中狸捅,這將允許自動(dòng)生成一個(gè)test數(shù)據(jù)庫(kù)衷蜓。
如果你使用SQLite,你不必創(chuàng)建任何東西尘喝,當(dāng)它被需要時(shí)會(huì)自動(dòng)創(chuàng)建磁浇。

當(dāng)你編輯mysite/settings.py時(shí),設(shè)置TIME_ZONE為你所在的時(shí)區(qū)朽褪。

同時(shí)還要注意置吓,在文件上方的INSTALL_APP設(shè)置,這里控制了django實(shí)例的應(yīng)用的所有名字缔赠。應(yīng)用可以被用在多個(gè)項(xiàng)目中衍锚,其他人可以通過(guò)打包和部署它們?cè)谒说捻?xiàng)目中。

默認(rèn)情況下嗤堰,INSTALL_APP包含了下面的應(yīng)用戴质,所有都是django創(chuàng)建的:

常見(jiàn)情況下输莺,這些應(yīng)用都會(huì)被包含在內(nèi)戚哎。

這些應(yīng)用中的一些需要至少一張數(shù)據(jù)庫(kù)表才能使用,所以嫂用,我們需要先在數(shù)據(jù)庫(kù)中創(chuàng)建表型凳,然后再使用它們。為了達(dá)到目的嘱函,我們先運(yùn)行下面的命令:

$ python manage.py migrate

migrate命令關(guān)注著INSTALL_APP的設(shè)置啰脚,根據(jù)mysite/settings.py數(shù)據(jù)庫(kù)的設(shè)置來(lái)創(chuàng)建了一切必須的數(shù)據(jù)庫(kù)表,數(shù)據(jù)遷移會(huì)隨著應(yīng)用進(jìn)行裝載。你可以看到每條數(shù)據(jù)庫(kù)遷移記錄橄浓。如果你對(duì)此感興趣粒梦,運(yùn)行你的數(shù)據(jù)庫(kù)命令行,輸入\dt (PostgreSQL), SHOW TABLES; (MySQL), .schema (SQLite), or SELECT TABLE_NAME FROM USER_TABLES; (Oracle) 用來(lái)展示django創(chuàng)建的表荸实。

最小的應(yīng)用
就像上面我們提到的匀们,一般情況都是包含這些默認(rèn)應(yīng)用的,但是准给,并不是所有人都需要它們泄朴,如果你不需要它們,可以注釋或者適當(dāng)?shù)膭h除INSTALL_APP中的某一行在運(yùn)行數(shù)據(jù)庫(kù)遷移命令之前露氮。migrate命令只會(huì)遷移INSTALL_APP中的應(yīng)用程序祖灰。


創(chuàng)建模型

現(xiàn)在我們將定義你的模型,實(shí)際上是用額外添加的元數(shù)據(jù)布局你的數(shù)據(jù)庫(kù)畔规。

哲學(xué)
模型是單一的局扶,它定義了你的數(shù)據(jù)真實(shí)的數(shù)據(jù)源,包含了基本的字段和數(shù)據(jù)行為叁扫。Django遵循DRY原則(DRY Principle
)三妈。目標(biāo)是在一處定義數(shù)據(jù)模型,并且可以自動(dòng)從它里面派生子類莫绣。
這包含了數(shù)據(jù)遷移畴蒲,不像ruby on rails,例如对室,數(shù)據(jù)遷移是完全派生自你的數(shù)據(jù)模型文件模燥,本質(zhì)上是歷史記錄,Django可以通過(guò)update數(shù)據(jù)庫(kù)事件回滾來(lái)匹配你的當(dāng)前模型掩宜。

在我們的投票應(yīng)用中蔫骂,我們將創(chuàng)建兩個(gè)模型:Question和Choise。Question有兩個(gè)字段question和publication date锭亏。Choise有兩個(gè)字段:文本字段choise和投票記錄字段。每個(gè)Choise都關(guān)聯(lián)到一個(gè)Question硬鞍。

這些概念都有簡(jiǎn)單的Python類來(lái)表示慧瘤。編輯polls/models.py文件,就像下面這樣:


image.png

代碼意思很明顯固该。每個(gè)模型都由類django.db.models.Model的子類來(lái)表示锅减,每個(gè)模型都由若干個(gè)類變量,用來(lái)表示模型中的數(shù)據(jù)庫(kù)字段伐坏。

每個(gè)字段都由Field類的實(shí)例來(lái)表示-比如CharField表示字符字段怔匣,DateTimeField表示時(shí)間字段。這會(huì)告訴Django每個(gè)字段應(yīng)該保存為什么數(shù)據(jù)類型。

每個(gè)Field實(shí)例的名字就是字段的名字(例如每瞒,question_text或者pub_date)金闽,這是對(duì)機(jī)器友好的方式。你將會(huì)在你的python代碼中使用這些值剿骨,并且你的數(shù)據(jù)庫(kù)將會(huì)用它做列名代芜。

你能使用一個(gè)可選的第一個(gè)位置參數(shù)來(lái)設(shè)計(jì)一個(gè)可讀性高的名字,這將會(huì)用于Django的自省功能浓利,它將作為文檔被替換挤庇。如果這個(gè)字段沒(méi)有被提供,Django將使用對(duì)機(jī)器友好的名字贷掖。在這個(gè)例子中嫡秕,我們只會(huì)對(duì)Question.pub_date定義可讀性高的名字設(shè)置。這個(gè)模型的其他字段苹威,將以機(jī)器友好的方式設(shè)置昆咽,因?yàn)檫@足以滿足人類的可讀性要求。

一些Field類需要必須的參數(shù)屠升。CharField潮改,例如,需要你傳遞一個(gè)max_length參數(shù)腹暖。不僅用于數(shù)據(jù)庫(kù)模式汇在,也會(huì)在驗(yàn)證中使用,我們稍后會(huì)看到脏答。

一個(gè)Field可以有不同的可選參數(shù)糕殉,在這種情況下,我們將把votes字段的default屬性設(shè)為0殖告。

最后阿蝶,注意關(guān)系的定義,要使用ForeignKey黄绩。這會(huì)告訴Django每個(gè)Choise被關(guān)聯(lián)到一個(gè)Question羡洁。Django支持所有常見(jiàn)的數(shù)據(jù)庫(kù)關(guān)系:多對(duì)一,多對(duì)多爽丹,一對(duì)一筑煮。


激活模型

這些一小段代碼給予Django很多信息。隨之粤蝎,Django會(huì)這樣做:

  • 為這個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)模式(CREATE TABLE statements)
  • 創(chuàng)建一個(gè)訪問(wèn)Question和Choise對(duì)象的python API

但是真仲,我們首先應(yīng)該告訴項(xiàng)目polls應(yīng)用已經(jīng)被安裝了。

哲學(xué)
Django應(yīng)用是“可插拔式”的:你可以將一個(gè)應(yīng)用用于多個(gè)項(xiàng)目中初澎,并且可以分布式應(yīng)用秸应,因?yàn)樗麄儾槐亟壎ǖ紻jango上安裝。

為了在我們的項(xiàng)目中包含應(yīng)用,我們需要參考配置類中的INSTALL_APPS软啼。PollsConfig類在polls/apps.py文件中桑谍,所以,它的點(diǎn)路徑是'polls.apps.PollsConfig'焰宣。編輯mysite/settings.py文件霉囚,添加點(diǎn)路徑到INSTALL_APPS設(shè)置中,看起來(lái)是這樣的:


image.png

現(xiàn)在Django知道已經(jīng)包含了polls應(yīng)用了匕积,讓我們運(yùn)行一條命令:

$ python manage.py makemigrations polls

你將會(huì)看到類似如下的顯示:


image.png

通過(guò)運(yùn)行makemigrations盈罐,你是在告訴Django,你更改了模型文件闪唆,并且你希望這些改變作為一次數(shù)據(jù)遷移被存儲(chǔ)盅粪。

Migrations是Django存儲(chǔ)你改變模型的記錄(并且影響你的數(shù)據(jù)庫(kù)模式)-他們僅僅是磁盤上的文件。如果你喜歡悄蕾,可以閱讀你模型的遷移記錄票顾,比如polls/migrations/0001_initial.py文件。不必?fù)?dān)心帆调,你不必每次Django生成時(shí)都閱讀它們奠骄,它們?cè)O(shè)置為可以人為編輯的,目的是讓你可以手動(dòng)更改Django的改動(dòng)番刊。

這有一個(gè)命令將會(huì)為你運(yùn)行數(shù)據(jù)遷移含鳞,并且自動(dòng)管理你的數(shù)據(jù)庫(kù)模式,它叫migrate芹务,我們稍后就會(huì)接觸到它蝉绷。但是首先,讓門看看migration運(yùn)行了什么SQL枣抱。sqlmigrate命令加上數(shù)據(jù)遷移的名字就能返回執(zhí)行了什么SQL熔吗。

$ python manage.py sqlmigrate polls 0001

你應(yīng)該看到類似下面的輸出(為了提高可讀性,我們進(jìn)行了格式化):


image.png

注意下面的事項(xiàng):

  • 下面確切的輸出會(huì)取決于你使用的數(shù)據(jù)庫(kù)佳晶,上面的輸出是PostgreSQL的桅狠。
  • 表名是根據(jù)應(yīng)用的名字自動(dòng)生成的,就是模塊的名字的小寫-question和choise轿秧。(你可以重寫這個(gè)特性)
  • 主鍵(IDs)是自動(dòng)添加的(這個(gè)特性同樣可以重寫)
  • 依照慣例中跌,Django添加了'_id'外鍵字段(同樣可以重寫)
  • 外鍵關(guān)系是由FOREIGN KEY限制的。不用擔(dān)心DEFERRABLE部分淤刃,那僅僅是告訴postgreSQL不要在事務(wù)的末尾強(qiáng)制執(zhí)行晒他。
  • 為你的數(shù)據(jù)庫(kù)量身定制吱型,明確數(shù)據(jù)庫(kù)的字段類型逸贾,例如auto_increment(MySQL),serial(PostgreSQL),或者integer primary key autoincrement(SQLite)會(huì)自動(dòng)處理铝侵,同樣適用于字段名灼伤,例如,適用單引號(hào)或者雙引號(hào)咪鲜。
  • sqlmigrate命令并沒(méi)有實(shí)際地對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)遷移狐赡,它僅僅是打印到屏幕上,目的是讓你知道執(zhí)行了什么SQL疟丙,Django認(rèn)為這是必須的颖侄。這對(duì)查看django即將要做什么操作是很有用的,在數(shù)據(jù)庫(kù)管理員要查看SQL腳本時(shí)享郊。

如果你感興趣览祖,你可以運(yùn)行python manage.py check,這會(huì)檢查項(xiàng)目中的問(wèn)題炊琉,并不會(huì)做數(shù)據(jù)遷移展蒂,也不會(huì)涉及到數(shù)據(jù)庫(kù):

$ python manage.py migrate


image.png

migrate命令會(huì)獲取所有的未被應(yīng)用的數(shù)據(jù)遷移信息(Django會(huì)在你的數(shù)據(jù)庫(kù)中用一個(gè)叫’django_migrations‘的表來(lái)記錄哪些數(shù)據(jù)遷移記錄被應(yīng)用了),并在數(shù)據(jù)庫(kù)上運(yùn)行-本質(zhì)上來(lái)講苔咪,你修改模型的時(shí)候會(huì)同步修改數(shù)據(jù)庫(kù)模式锰悼。

Migrations是非常有用的,讓你可以在開發(fā)項(xiàng)目時(shí)隨著時(shí)間改變模型团赏,而不用刪除原有的表再次新建表-它專注于動(dòng)態(tài)更新數(shù)據(jù)庫(kù)箕般,在不丟失數(shù)據(jù)的情況下。在之后的教程部分馆里,我們會(huì)更深層次的封裝他們隘世,但是現(xiàn)在,記住三步來(lái)指導(dǎo)你修改模型:

  • 修改模型(在models.py文件中)
  • 運(yùn)行python manage.py makemigrations來(lái)為這些改變創(chuàng)建遷移記錄
  • 運(yùn)行python manage.py migrate來(lái)應(yīng)用這些改變到數(shù)據(jù)庫(kù)上鸠踪。

把創(chuàng)建遷移記錄和應(yīng)用遷移記錄命令分開的原因是因?yàn)楸撸阈枰峤籱igration到你的版本控制系統(tǒng),并裝載到你的應(yīng)用程序上营密,這不僅僅讓你的開發(fā)更簡(jiǎn)單械媒,也讓其他開發(fā)者更有用。

閱讀 django-admin documentation來(lái)查看manage.py能做的全部信息评汰。


使用API

現(xiàn)在纷捞,讓我們打開python shell來(lái)使用django給你提供的免費(fèi)API。激活python shell被去,使用下面的命令:

$ python manage.py shell

我們使用這個(gè)命令來(lái)代替簡(jiǎn)單的"python"主儡,因?yàn)閙anage.py設(shè)置了DJANGO_SETTINGS_MODULE環(huán)境變量,會(huì)把Django和python的路徑導(dǎo)入到mysite/settings.py文件中惨缆。

一旦你進(jìn)入到shell中糜值,瀏覽 database API丰捷。

image.png

等一下,<Question: Question object (1)>不是對(duì)象的有用的表達(dá)方式寂汇。讓我們通過(guò)修改Question模型修復(fù)這個(gè)問(wèn)題(在polls/models.py文件中)病往,并且在Question和Choise中都添加一個(gè)str()方法。

image.png

添加str()方法對(duì)你的模型來(lái)說(shuō)很重要骄瓣,不僅僅是在處理時(shí)出現(xiàn)提示符以給你自己提供方便停巷,更因?yàn)閷?duì)象的表達(dá)形式會(huì)被django自動(dòng)生成管理。

注意這些都是普通的python方法榕栏,為了示范畔勤,讓我們自定義一個(gè)方法。


image.png

注意添加的import datetime和from django.utils import timezone扒磁,引用了python的標(biāo)準(zhǔn)庫(kù)中的datetime模塊硼被,并且Django的時(shí)區(qū)相關(guān)的工具在django.utils.timezone中,如果你對(duì)Python中的處理時(shí)區(qū)問(wèn)題不太熟悉渗磅,你可以在 time zone support docs了解更多嚷硫。

保存這些改變,打開一個(gè)新的python shell始鱼,再次運(yùn)行python manage.py shell仔掸。


image.png

想了解更多關(guān)于模型關(guān)系的信息,可以看 Accessing related objects医清。查看怎樣使用雙下劃線執(zhí)行字段通過(guò)API查找起暮,可以看Field lookups。更多數(shù)據(jù)庫(kù)API的詳細(xì)信息会烙,可以看 Database API reference负懦。


介紹Django Admin

哲學(xué)
為你的員工或者客戶生成后臺(tái)管理系統(tǒng),來(lái)進(jìn)行添加柏腻,刪除纸厉,修改內(nèi)容是冗長(zhǎng)乏味且缺乏創(chuàng)造性的工作。為此五嫂,Django完全自動(dòng)模型的管理界面颗品。
Django誕生于報(bào)社,非常清楚的分離了“發(fā)布內(nèi)容”和“公共”網(wǎng)站沃缘。網(wǎng)站管理者使用系統(tǒng)來(lái)添加新聞故事躯枢,事件,體育消息等等槐臀,這些內(nèi)容都是在“公共”網(wǎng)站上的锄蹂。Django解決了管理網(wǎng)站和編輯內(nèi)容都在同一個(gè)網(wǎng)站界面的問(wèn)題。
Admin不打算讓客戶訪問(wèn)水慨,它是網(wǎng)站管理者使用的得糜。

創(chuàng)建一個(gè)管理員用戶

首先寨昙,我們得創(chuàng)建一個(gè)可以訪問(wèn)admin網(wǎng)站的用戶,運(yùn)行如下命令:

$ python manage.py createsuperuser

輸入你期望的用戶名掀亩,然后按回車:

Username: admin

然后會(huì)提示你輸入你期望的郵箱地址:

Eamil Address: admin@example.com

下一步是輸入你的密碼,你需要輸入兩次欢顷,第二次輸入是為了確認(rèn)是否和第一次相同槽棍。

Password: ******
Password(again): *****
Superuser created succesfully.


啟動(dòng)開發(fā)服務(wù)器

Django的后臺(tái)管理系統(tǒng)默認(rèn)是被激活了的,讓我們啟動(dòng)開發(fā)者服務(wù)器抬驴,并在瀏覽器中查看炼七。
如果服務(wù)器沒(méi)有啟動(dòng),可以這樣做:

$ python manage.py runserver

現(xiàn)在打開瀏覽器布持,跳到本地域名的'/admin/'路徑下豌拙,例如 http://127.0.0.1:8000/admin/,你應(yīng)該在屏幕上看到用戶登錄的頁(yè)面:

image.png

translation默認(rèn)是被開啟了的题暖。登錄頁(yè)面也許會(huì)展示你所使用的語(yǔ)言按傅,這取決于你的瀏覽器的設(shè)置,以及Django是否翻譯了這門語(yǔ)言胧卤。

image.png

你應(yīng)該看到了幾種可編輯的內(nèi)容:groups和users唯绍。是django.contrib.auth提供的,驗(yàn)證框架由Django進(jìn)行裝載枝誊。


讓polls應(yīng)用可以在admin中被編輯

但是我們的poll應(yīng)用在哪呢况芒?它沒(méi)有顯示在admin的首頁(yè)。

我們只需要做一件事:我們需要告訴admin叶撒,Question對(duì)象有一個(gè)管理界面绝骚。為了達(dá)到目的,打開polls/models.py文件祠够,并編輯它:


image.png

瀏覽功能不受限的admin

現(xiàn)在我們注冊(cè)了Question压汪,Django知道應(yīng)該把它展示在首頁(yè)上了:


image.png

點(diǎn)擊“Question”,現(xiàn)在你就進(jìn)入到了question的“change list”頁(yè)面了古瓤。這個(gè)頁(yè)面會(huì)展示數(shù)據(jù)庫(kù)中所有的question對(duì)象的列表蛾魄,讓你可以選擇一個(gè)并改變它。


image.png

點(diǎn)擊“what’s up”湿滓,詢問(wèn)是否更改滴须。


image.png

這有一些問(wèn)題需要注意:

  • 這個(gè)表單是Question模型自動(dòng)生成的
  • 不同類型的模型字段(DateTimeField,CharField)根據(jù)適當(dāng)?shù)腍TML輸入叽奥。每個(gè)字段在admin中都知道如何展示扔水。
  • 每個(gè)DateTimeField不收js的束縛,日期獲取“今天”并在日歷中彈出朝氓,并獲取今天的日期魔市,便捷的彈出當(dāng)前可用列表主届。

下面的部分給你幾個(gè)選項(xiàng):

  • Save-保存更改,返回這個(gè)類型對(duì)象的“change-list”頁(yè)面
  • Save and continue editing- 保存更改待德,并重新加載這個(gè)對(duì)象的管理頁(yè)面
  • Save and add another-保存更改君丁,新建一個(gè)這個(gè)對(duì)象的空表單。
  • Delete-展示一個(gè)確認(rèn)刪除的頁(yè)面

如果"Date Pulisher"的值和你在教程1中創(chuàng)建的時(shí)間不匹配時(shí)将宪,這可能意味著你沒(méi)有正確的設(shè)置時(shí)區(qū)”TIME_ZONE”绘闷,修改它,刷新頁(yè)面较坛,返現(xiàn)正確的值出現(xiàn)了印蔗。

修改“Date publisher”通過(guò)點(diǎn)擊"Today"和"now"標(biāo)簽,然后再點(diǎn)擊"Save and continue editing"丑勤。然后點(diǎn)擊右上方的"history"华嘹。你會(huì)看到通過(guò)django admin進(jìn)行所有改動(dòng)的頁(yè)面,有時(shí)間戳法竞,用戶名(誰(shuí)修改的):


image.png

當(dāng)你了解了模型的API時(shí)耙厚,并熟悉了django admin時(shí),請(qǐng)閱讀 part 3 of this tutorial來(lái)學(xué)習(xí)如何給polls應(yīng)用添加更多的視圖岔霸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颜曾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秉剑,更是在濱河造成了極大的恐慌泛豪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侦鹏,死亡現(xiàn)場(chǎng)離奇詭異诡曙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)略水,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門价卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渊涝,你說(shuō)我怎么就攤上這事慎璧。” “怎么了跨释?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵胸私,是天一觀的道長(zhǎng)鳖谈。 經(jīng)常有香客問(wèn)我岁疼,道長(zhǎng)缆娃,這世上最難降的妖魔是什么瑰排? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮暖侨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘字逗。我一直安慰自己京郑,他們只是感情好扳肛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布乘碑。 她就那樣靜靜地躺著,像睡著了一般兽肤。 火紅的嫁衣襯著肌膚如雪套腹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天电禀,我揣著相機(jī)與錄音,去河邊找鬼笤休。 笑死,一個(gè)胖子當(dāng)著我的面吹牛店雅,可吹牛的內(nèi)容都是我干的政基。 我是一名探鬼主播闹啦,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窍奋!你這毒婦竟也來(lái)了荐健?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琳袄,失蹤者是張志新(化名)和其女友劉穎江场,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窖逗,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扛稽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滑负。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片在张。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡用含,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帮匾,到底是詐尸還是另有隱情啄骇,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布瘟斜,位于F島的核電站缸夹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏螺句。R本人自食惡果不足惜虽惭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛇尚。 院中可真熱鬧芽唇,春花似錦、人聲如沸取劫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谱邪。三九已至炮捧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惦银,已是汗流浹背咆课。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扯俱,地道東北人傀蚌。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蘸吓,于是被迫代替她去往敵國(guó)和親善炫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容