Django框架基礎(chǔ)01-Django流程

一、Django介紹

1.簡介

django-c300

Django当悔,發(fā)音為[`d???ɡ??]澡罚,是用python語言寫的開源web開發(fā)框架倍权,并遵循MVC設(shè)計(jì)。勞倫斯出版集團(tuán)為了開發(fā)以新聞內(nèi)容為主的網(wǎng)站挑格,而開發(fā)出來了這個(gè)框架破讨,于2005年7月在BSD許可證下發(fā)布。這個(gè)名稱來源于比利時(shí)的爵士音樂家DjangoReinhardt,他是一個(gè)吉普賽人,主要以演奏吉它為主害捕,還演奏過小提琴等莲蜘。由于Django在近年來的迅速發(fā)展唯咬,應(yīng)用越來越廣泛沐兵,被著名IT開發(fā)雜志SDTimes評選為2013SDTimes100胳泉,位列"API、庫和框架"分類第6位壁酬,被認(rèn)為是該領(lǐng)域的佼佼者。

Django的主要目的是簡便怠硼、快速的開發(fā)數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)站涡上。它強(qiáng)調(diào)代碼復(fù)用趾断,多個(gè)組件可以很方便的以"插件"形式服務(wù)于整個(gè)框架,Django有許多功能強(qiáng)大的第三方插件吩愧,你甚至可以很方便的開發(fā)出自己的工具包。這使得Django具有很強(qiáng)的可擴(kuò)展性增显。它還強(qiáng)調(diào)快速開發(fā)和DRY(DoNotRepeatYourself)原則雁佳。

2.特點(diǎn)

1)重量級框架

對比Flask框架,Django原生提供了眾多的功能組件同云,讓開發(fā)更簡便快速糖权。

  • 提供項(xiàng)目工程管理的自動(dòng)化腳本工具
  • 數(shù)據(jù)庫ORM支持(對象關(guān)系映射,英語:Object Relational Mapping)
  • 模板
  • 表單
  • Admin管理站點(diǎn)
  • 文件管理
  • 認(rèn)證權(quán)限
  • session機(jī)制
  • 緩存

2)MVT模式

有一種程序設(shè)計(jì)模式叫MVC炸站,其核心思想是分工星澳、解耦,讓不同的代碼塊之間降低耦合旱易,增強(qiáng)代碼的可擴(kuò)展性和可移植性禁偎,實(shí)現(xiàn)向后兼容。

MVC模式說明

MVC模式
  • M全拼為Model阀坏,主要封裝對數(shù)據(jù)庫層的訪問如暖,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增、刪忌堂、改盒至、查操作。
  • V全拼為View士修,用于封裝結(jié)果枷遂,生成頁面展示的html內(nèi)容。
  • C全拼為Controller棋嘲,用于接收請求酒唉,處理業(yè)務(wù)邏輯,與Model和View交互封字,返回結(jié)果黔州。

Django的MVT

MVT模式
  • M全拼為Model,與MVC中的M功能相同阔籽,負(fù)責(zé)和數(shù)據(jù)庫交互流妻,進(jìn)行數(shù)據(jù)處理。
  • V全拼為View笆制,與MVC中的C功能相同绅这,接收請求,進(jìn)行業(yè)務(wù)處理在辆,返回應(yīng)答证薇。
  • T全拼為Template度苔,與MVC中的V功能相同,負(fù)責(zé)封裝構(gòu)造要返回的html浑度。

注:差異就在于黑線黑箭頭標(biāo)識出來的部分

Django學(xué)習(xí)資料

二寇窑、環(huán)境安裝

1. 創(chuàng)建虛擬環(huán)境

mkvirtualenv django_py3_1.11 -p python3

注意需要聯(lián)網(wǎng)

2. 安裝Django

使用django 1.11.11版本,注意需要聯(lián)網(wǎng)

pip install django==1.11.11

3. 常用虛擬環(huán)境和pip命令

# 虛擬環(huán)境
mkvirtualenv  # 創(chuàng)建虛擬環(huán)境
rmvirtualenv  # 刪除虛擬環(huán)境
workon  # 進(jìn)入虛擬環(huán)境箩张、查看所有虛擬環(huán)境
deactivate  # 退出虛擬環(huán)境

# pip
pip install  # 安裝依賴包
pip uninstall  # 卸載依賴包
pip list  # 查看已安裝的依賴包
pip freeze  # 凍結(jié)當(dāng)前環(huán)境的依賴包

三甩骏、創(chuàng)建Django項(xiàng)目

文檔

步驟

  • 創(chuàng)建Django項(xiàng)目
    • django-admin startproject name
  • 創(chuàng)建子應(yīng)用
    • python manager.py startapp name

創(chuàng)建工程

在使用Flask框架時(shí),項(xiàng)目工程目錄的組織與創(chuàng)建是需要我們自己手動(dòng)創(chuàng)建完成的先慷。
在django中饮笛,項(xiàng)目工程目錄可以借助django提供的命令幫助我們創(chuàng)建。

1. 創(chuàng)建

創(chuàng)建工程的命令為:

django-admin startproject 工程名稱

例如:想要在桌面的code目錄中創(chuàng)建一個(gè)名為demo的項(xiàng)目工程论熙,可執(zhí)行如下命令:

cd ~/Desktop/Code
django-admin startproject bookmanager

執(zhí)行后福青,會(huì)多出一個(gè)新目錄名為bookmanager,此即為新創(chuàng)建的工程目錄脓诡。

2. 工程目錄說明

查看創(chuàng)建的工程目錄无午,結(jié)構(gòu)如下:


目錄結(jié)構(gòu)
  • 與項(xiàng)目同名的目錄,此處為bookmanager誉券。
  • settings.py是項(xiàng)目的整體配置文件指厌。
  • urls.py是項(xiàng)目的URL配置文件。
  • wsgi.py是項(xiàng)目與WSGI兼容的Web服務(wù)器入口踊跟。
  • manage.py是項(xiàng)目管理文件踩验,通過它管理項(xiàng)目。

3. 運(yùn)行開發(fā)服務(wù)器

在開發(fā)階段商玫,為了能夠快速預(yù)覽到開發(fā)的效果箕憾,django提供了一個(gè)純python編寫的輕量級web服務(wù)器,僅在開發(fā)階段使用拳昌。

運(yùn)行服務(wù)器命令如下:

python manage.py runserver ip:端口
或:
python manage.py runserver

可以不寫IP和端口袭异,默認(rèn)IP是127.0.0.1,默認(rèn)端口為8000炬藤。

啟動(dòng)后可見如下信息:

run-server

在瀏覽器中輸入網(wǎng)址“127.0.0.1:8000”便可看到效果:

image
  • django默認(rèn)工作在調(diào)式Debug模式下御铃,如果增加、修改沈矿、刪除文件上真,服務(wù)器會(huì)自動(dòng)重啟。
  • 按ctrl+c停止服務(wù)器羹膳。

創(chuàng)建子應(yīng)用

在Web應(yīng)用中睡互,通常有一些業(yè)務(wù)功能模塊是在不同的項(xiàng)目中都可以復(fù)用的,故在開發(fā)中通常將工程項(xiàng)目拆分為不同的子功能模塊,各功能模塊間可以保持相對的獨(dú)立就珠,在其他工程項(xiàng)目中需要用到某個(gè)特定功能模塊時(shí)寇壳,可以將該模塊代碼整體復(fù)制過去,達(dá)到復(fù)用妻怎。

在Flask框架中也有類似子功能應(yīng)用模塊的概念壳炎,即藍(lán)圖Blueprint。

Django的視圖編寫是放在子應(yīng)用中的逼侦。

1. 創(chuàng)建

在django中冕广,創(chuàng)建子應(yīng)用模塊目錄仍然可以通過命令來操作,即:

python manage.py startapp 子應(yīng)用名稱

manage.py為上述創(chuàng)建工程時(shí)自動(dòng)生成的管理文件偿洁。

例如肪康,在剛才創(chuàng)建的bookmanager工程中剪芍,想要?jiǎng)?chuàng)建一個(gè)用戶book子應(yīng)用模塊,可執(zhí)行:

cd ~/Desktop/code/book
python manage.py startapp book

執(zhí)行后疗垛,可以看到工程目錄中多出了一個(gè)名為book的子目錄挠阁。

2. 子應(yīng)用目錄說明

查看此時(shí)的工程目錄宾肺,結(jié)構(gòu)如下:


工程目錄
  • admin.py文件跟網(wǎng)站的后臺(tái)管理站點(diǎn)配置相關(guān)。
  • apps.py文件用于配置當(dāng)前子應(yīng)用的相關(guān)信息侵俗。
  • migrations目錄用于存放數(shù)據(jù)庫遷移歷史文件锨用。
  • models.py文件用戶保存數(shù)據(jù)庫模型類。
  • tests.py文件用于開發(fā)測試用例隘谣,編寫單元測試增拥。
  • views.py文件用于編寫Web應(yīng)用視圖。

3. 注冊安裝子應(yīng)用

創(chuàng)建出來的子應(yīng)用目錄文件雖然被放到了工程項(xiàng)目目錄中寻歧,但是django工程并不能立即直接使用該子應(yīng)用掌栅,需要注冊安裝后才能使用。

在工程配置文件settings.py中码泛,INSTALLED_APPS項(xiàng)保存了工程中已經(jīng)注冊安裝的子應(yīng)用猾封,初始工程中的INSTALLED_APPS如下:

image

注冊安裝一個(gè)子應(yīng)用的方法,即是將子應(yīng)用的配置信息文件apps.py中的Config類添加到INSTALLED_APPS列表中噪珊。

例如晌缘,將剛創(chuàng)建的book子應(yīng)用添加到工程中,可在INSTALLED_APPS列表中添加'book.apps.BookConfig'痢站。

image

四磷箕、模型

  • 當(dāng)前項(xiàng)目的開發(fā), 都是數(shù)據(jù)驅(qū)動(dòng)的。
  • 以下為書籍信息管理的數(shù)據(jù)關(guān)系:書籍和人物是 :一對多關(guān)系


    image
  • 要先分析出項(xiàng)目中所需要的數(shù)據(jù), 然后設(shè)計(jì)數(shù)據(jù)庫表.

使用Django進(jìn)行數(shù)據(jù)庫開發(fā)的提示 :

  • MVT設(shè)計(jì)模式中的Model, 專門負(fù)責(zé)和數(shù)據(jù)庫交互.對應(yīng)(models.py)
  • 由于Model中內(nèi)嵌了ORM框架, 所以不需要直接面向數(shù)據(jù)庫編程.
  • 而是定義模型類, 通過模型類和對象完成數(shù)據(jù)庫表的增刪改查.
  • ORM框架就是把數(shù)據(jù)庫表的行與相應(yīng)的對象建立關(guān)聯(lián), 互相轉(zhuǎn)換.使得數(shù)據(jù)庫的操作面向?qū)ο?

使用Django進(jìn)行數(shù)據(jù)庫開發(fā)的步驟 :

  1. 定義模型類
  2. 模型遷移
  3. 操作數(shù)據(jù)庫

1. 定義模型類

  • 根據(jù)書籍表結(jié)構(gòu)設(shè)計(jì)模型類:
    • 模型類:BookInfo
    • 書籍名稱字段:name
  • 根據(jù)人物表結(jié)構(gòu)設(shè)計(jì)模型類:
    • 模型類:PeopleInfo
    • 人物姓名字段:name
    • 人物性別字段:gender
    • 外鍵約束:book
      • 外鍵要指定所屬的模型類book = models.ForeignKey(BookInfo)
  • 說明 :
    • 書籍-人物的關(guān)系為一對多. 一本書中可以有多個(gè)英雄.
    • 不需要定義主鍵字段, 在生成表時(shí)會(huì)自動(dòng)添加, 并且值為自增長.
  • 根據(jù)數(shù)據(jù)庫表的設(shè)計(jì)
    • 在models.py中定義模型類,繼承自models.Model
    •   from django.db import models
      
        # Create your models here.
        # 準(zhǔn)備書籍列表信息的模型類
        class BookInfo(models.Model):
        # 創(chuàng)建字段瑟押,字段類型...
        name = models.CharField(max_length=10)
      
        # 準(zhǔn)備人物列表信息的模型類
        class PeopleInfo(models.Model):
        name = models.CharField(max_length=10)
        gender = models.BooleanField()
        # 外鍵約束:人物屬于哪本書
        book = models.ForeignKey(BookInfo)
      
    
    

2. 模型遷移 (建表)

  • 遷移由兩步完成 :

    • 生成遷移文件:根據(jù)模型類生成創(chuàng)建表的語句
    python manage.py makemigrations
    
  • 執(zhí)行遷移:根據(jù)第一步生成的語句在數(shù)據(jù)庫中創(chuàng)建表

python manage.py migrate
  • 遷移前


    image
  • 遷移后


    image

提示:默認(rèn)采用sqlite3數(shù)據(jù)庫來存儲(chǔ)數(shù)據(jù)

五搀捷、站點(diǎn)管理

  • 站點(diǎn): 分為內(nèi)容發(fā)布公共訪問兩部分
  • 內(nèi)容發(fā)布的部分由網(wǎng)站的管理員負(fù)責(zé)查看、添加、修改嫩舟、刪除數(shù)據(jù)
  • Django能夠根據(jù)定義的模型類自動(dòng)地生成管理模塊
  • 使用Django的管理模塊, 需要按照如下步驟操作 :
    • 1.管理界面本地化
    • 2.創(chuàng)建管理員
    • 3.注冊模型類
    • 4.發(fā)布內(nèi)容到數(shù)據(jù)庫

1.管理界面本地化

  • 本地化是將顯示的語言氢烘、時(shí)間等使用本地的習(xí)慣,這里的本地化就是進(jìn)行中國化.
  • 中國大陸地區(qū)使用簡體中文, 時(shí)區(qū)使用亞洲/上海時(shí)區(qū), 注意這里不使用北京時(shí)區(qū).
  • 本地化前


    image
  • 本地化后


    image

2.創(chuàng)建管理員

  • 創(chuàng)建管理員的命令 :
python manage.py createsuperuser
  • 重置密碼
python manager.py changepassword 用戶名
  • 登陸站點(diǎn) :http://127.0.0.1:8000/admin

    • 需要服務(wù)器是啟動(dòng)狀態(tài)


      管理員登入界面
  • 登陸站點(diǎn)成功

    • 站點(diǎn)界面中沒有書籍和人物管理入口,因?yàn)闆]有注冊模型類


      image

3.注冊模型類

  • 應(yīng)用admin.py文件中注冊模型類

    • 需要導(dǎo)入模型模塊 :from book.models import BookInfo,PeopleInfo
      image
  • 注冊模型后


    image

注冊模型成功后, 就可以在站點(diǎn)管理界面方便快速的管理數(shù)據(jù).

4.發(fā)布內(nèi)容到數(shù)據(jù)庫

image
  • 發(fā)布內(nèi)容后家厌,優(yōu)化模型類展示

  • # 準(zhǔn)備書籍列表信息的模型類
    class BookInfo(models.Model):
        # 創(chuàng)建字段播玖,字段類型...
        name = models.CharField(max_length=10)
    
        def __str__(self):
            """將模型類以字符串的方式輸出"""
            return self.name
    
    image

六、視圖和URL

  • 站點(diǎn)管理頁面做好了, 接下來就要做公共訪問的頁面了.
  • 對于Django的設(shè)計(jì)框架MVT.
    • 用戶在URL中請求的是視圖.
    • 視圖接收請求后進(jìn)行處理.
    • 并將處理的結(jié)果返回給請求者.
  • 使用視圖時(shí)需要進(jìn)行兩步操作
    • 1.定義視圖
    • 2.配置URLconf

1. 定義視圖

  • 視圖就是一個(gè)Python函數(shù)饭于,被定義在應(yīng)用views.py中.
  • 視圖的第一個(gè)參數(shù)是HttpRequest類型的對象reqeust蜀踏,包含了所有請求信息.
  • 視圖必須返回HttpResponse對象,包含返回給請求者的響應(yīng)信息.
  • 需要導(dǎo)入HttpResponse模塊 :from django.http import HttpResponse
  • 定義視圖函數(shù) : 響應(yīng)字符串OK!給客戶端
    image

2. 配置URLconf

  • 查找視圖的過程 :

    • 1.請求者在瀏覽器地址欄中輸入U(xiǎn)RL, 請求到網(wǎng)站.
    • 2.網(wǎng)站獲取URL信息.
    • 3.然后與編寫好的URLconf逐條匹配.
    • 4.如果匹配成功則調(diào)用對應(yīng)的視圖.
    • 5.如果所有的URLconf都沒有匹配成功.則返回404錯(cuò)誤.


      image
  • URLconf入口

    image
  • 需要兩步完成URLconf配置

    • 1.在項(xiàng)目中定義URLconf
    • 2.在應(yīng)用中定義URLconf
  • 應(yīng)用中定義URLconf

    • 提示:一條URLconf包括URL規(guī)則掰吕、視圖兩部分
      • URL規(guī)則使用正則表達(dá)式定義.

      • 視圖就是在views.py中定義的視圖函數(shù).

        image

      • url匹配過程


        image

3. 測試:請求訪問

  • 訪問http://127.0.0.1:8000/

    image

4. 總結(jié)

視圖處理過程如下圖:

image

使用視圖時(shí)需要進(jìn)行兩步操作果覆,兩步操作不分先后

  1. 配置URLconf
  2. 應(yīng)用/views.py中定義視圖

七、總結(jié)View和URL匹配流程

image

八殖熟、模板

思考 : 網(wǎng)站如何向客戶端返回一個(gè)漂亮的頁面呢局待?

  • 提示 :

    • 漂亮的頁面需要htmlcss菱属、js.
    • 可以把這一堆字段串全都寫到視圖中, 作為HttpResponse()的參數(shù),響應(yīng)給客戶端.
  • 問題 :

    • 視圖部分代碼臃腫, 耦合度高.
    • 這樣定義的字符串是不會(huì)出任何效果和錯(cuò)誤的.
    • 效果無法及時(shí)查看.有錯(cuò)也不容易及時(shí)發(fā)現(xiàn).
  • 設(shè)想 :

    • 是否可以有一個(gè)專門定義前端頁面的地方, 效果可以及時(shí)展示,錯(cuò)誤可以及時(shí)發(fā)現(xiàn),并且可以降低模塊間耦合度!
  • 解決問題 :模板

    • MVT設(shè)計(jì)模式中的T,Template
  • Django中, 將前端的內(nèi)容定義在模板中, 然后再把模板交給視圖調(diào)用, 各種漂亮钳榨、炫酷的效果就出現(xiàn)了.

模板使用步驟

  1. 創(chuàng)建模板
  2. 設(shè)置模板查找路徑
  3. 模板接收視圖傳入的數(shù)據(jù)
  4. 模板處理數(shù)據(jù)

1.創(chuàng)建模板

  • 應(yīng)用同級目錄下創(chuàng)建模板文件夾templates. 文件夾名稱固定寫法.
  • templates文件夾下, 創(chuàng)建應(yīng)用同名文件夾. 例, Book
  • 應(yīng)用同名文件夾下創(chuàng)建網(wǎng)頁模板文件. 例 :index.html
    image

2.設(shè)置模板查找路徑

image

3.模板接收視圖傳入的數(shù)據(jù)

  • 視圖模板加載


    image

4.模板處理數(shù)據(jù)

image

5. 查看模板處理數(shù)據(jù)成果

image

九、總結(jié)View-Templates流程

image

十纽门、配置和靜態(tài)文件

setting配置文件

1. BASE_DIR

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

當(dāng)前工程的根目錄薛耻,Django會(huì)依此來定位工程內(nèi)的相關(guān)文件,我們也可以使用該參數(shù)來構(gòu)造文件路徑赏陵。

2. DEBUG

調(diào)試模式饼齿,創(chuàng)建工程后初始值為True,即默認(rèn)工作在調(diào)試模式下瘟滨。

  • 作用:
    • 修改代碼文件候醒,程序自動(dòng)重啟
    • Django程序出現(xiàn)異常時(shí),向前端顯示詳細(xì)的錯(cuò)誤追蹤信息杂瘸,例如


      image
    • 而非調(diào)試模式下倒淫,僅返回Server Error (500)

注意:部署線上運(yùn)行的Django不要運(yùn)行在調(diào)式模式下,記得修改DEBUG=False和ALLOW_HOSTS败玉。

3. 本地語言與時(shí)區(qū)

Django支持本地化處理敌土,即顯示語言與時(shí)區(qū)支持本地化。

本地化是將顯示的語言运翼、時(shí)間等使用本地的習(xí)慣返干,這里的本地化就是進(jìn)行中國化,中國大陸地區(qū)使用簡體中文血淌,時(shí)區(qū)使用亞洲/上海時(shí)區(qū)矩欠,注意這里不使用北京時(shí)區(qū)表示财剖。

初始化的工程默認(rèn)語言和時(shí)區(qū)為英語和UTC標(biāo)準(zhǔn)時(shí)區(qū):

LANGUAGE_CODE = 'en-us'  # 語言
TIME_ZONE = 'UTC'  # 時(shí)區(qū)# 時(shí)區(qū)

將語言和時(shí)區(qū)修改為中國大陸信息:

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'

靜態(tài)文件

項(xiàng)目中的CSS、圖片癌淮、js都是靜態(tài)文件躺坟。一般會(huì)將靜態(tài)文件放到一個(gè)單獨(dú)的目錄中,以方便管理乳蓄。在html頁面中調(diào)用時(shí)咪橙,也需要指定靜態(tài)文件的路徑,Django中提供了一種解析的方式配置靜態(tài)文件路徑虚倒。靜態(tài)文件可以放在項(xiàng)目根目錄下美侦,也可以放在應(yīng)用的目錄下,由于有些靜態(tài)文件在項(xiàng)目中是通用的魂奥,所以推薦放在項(xiàng)目的根目錄下菠剩,方便管理。

為了提供靜態(tài)文件耻煤,需要配置兩個(gè)參數(shù):

  • STATICFILES_DIRS存放查找靜態(tài)文件的目錄
  • STATIC_URL訪問靜態(tài)文件的URL前綴

示例

1) 在項(xiàng)目根目錄下創(chuàng)建static目錄來保存靜態(tài)文件赠叼。

2) 在bookmanager/settings.py中修改靜態(tài)文件的兩個(gè)參數(shù)為

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

3)此時(shí)在static添加的任何靜態(tài)文件都可以使用網(wǎng)址/static/文件在static中的路徑來訪問了。

例如违霞,我們向static目錄中添加一個(gè)index.html文件,在瀏覽器中就可以使用127.0.0.1:8000/static/index.html來訪問瞬场。

或者我們在static目錄中添加了一個(gè)子目錄和文件book/detail.html买鸽,在瀏覽器中就可以使用127.0.0.1:8000/static/book/detail.html來訪問。

App應(yīng)用配置

在每個(gè)應(yīng)用目錄中都包含了apps.py文件贯被,用于保存該應(yīng)用的相關(guān)信息眼五。

在創(chuàng)建應(yīng)用時(shí),Django會(huì)向apps.py文件中寫入一個(gè)該應(yīng)用的配置類彤灶,如:

from django.apps import AppConfig

class BookConfig(AppConfig):
    name = 'book'

我們將此類添加到工程settings.py中的INSTALLED_APPS列表中看幼,表明注冊安裝具備此配置屬性的應(yīng)用。

  • AppConfig.name屬性表示這個(gè)配置類是加載到哪個(gè)應(yīng)用的幌陕,每個(gè)配置類必須包含此屬性诵姜,默認(rèn)自動(dòng)生成。

  • AppConfig.verbose_name屬性用于設(shè)置該應(yīng)用的直觀可讀的名字搏熄,此名字在Django提供的Admin管理站點(diǎn)中會(huì)顯示棚唆,如

from django.apps import AppConfig

class UsersConfig(AppConfig):
    name = 'book'
    verbose_name = '圖書管理'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市心例,隨后出現(xiàn)的幾起案子宵凌,更是在濱河造成了極大的恐慌,老刑警劉巖止后,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞎惫,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓜喇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門挺益,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人欠橘,你說我怎么就攤上這事矩肩。” “怎么了肃续?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵黍檩,是天一觀的道長。 經(jīng)常有香客問我始锚,道長刽酱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任瞧捌,我火速辦了婚禮棵里,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姐呐。我一直安慰自己殿怜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布曙砂。 她就那樣靜靜地躺著头谜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸠澈。 梳的紋絲不亂的頭發(fā)上柱告,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音笑陈,去河邊找鬼际度。 笑死,一個(gè)胖子當(dāng)著我的面吹牛涵妥,可吹牛的內(nèi)容都是我干的乖菱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蓬网,長吁一口氣:“原來是場噩夢啊……” “哼块请!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拳缠,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤墩新,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后窟坐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體海渊,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绵疲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臣疑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盔憨。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖讯沈,靈堂內(nèi)的尸體忽然破棺而出郁岩,到底是詐尸還是另有隱情,我是刑警寧澤缺狠,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布挤茄,位于F島的核電站,受9級特大地震影響穷劈,放射性物質(zhì)發(fā)生泄漏歇终。R本人自食惡果不足惜社证,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猴仑。 院中可真熱鬧肥哎,春花似錦、人聲如沸篡诽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吊圾。三九已至项乒,卻和暖如春檀何,著一層夾襖步出監(jiān)牢的瞬間廷支,已是汗流浹背恋拍。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工施敢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狭莱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓悯许,卻偏偏與公主長得像辉阶,于是被迫代替她去往敵國和親谆甜。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

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