Django框架的介紹及基本配置


Django框架的介紹

Django的官網(wǎng)

官方網(wǎng)址: http://www.djangoproject.com

中文文檔(第三方):

https://yiyibooks.cn/

http://djangobook.py3k.cn/

Django的離線文檔

解壓縮數(shù)據(jù)包 django-docs-1.11-en.zip

用瀏覽器打開 django-docs-1.11-en/index.html

Django的安裝

查看已安裝的版本

>>>importdjango

>>>print(django.VERSION)

(1,11,8,'final',0)

安裝

在線安裝

$ sudo pip3 install django? 安裝django的最新版本

$ sudo pip3 install django[==版本] 安裝django的指定版本

如:

$ sudo pip3 install django==1.11.8

離線安裝

下載安裝包:

安裝離線包

$ tar -xvf Django-1.11.8.tar.gz

$ cd Django-1.11.8

$ sudo python3 setup.py install

用wheel離線安裝

下載安裝包:

pip3 download -d /home/tarena/django_packs django==1.11.8

安裝離線包

$ pip3 install Django-1.11.8.whl

Django的卸載

$ pip3 uninstall django

Django 的開發(fā)環(huán)境

Django 1.11.x 支持 Python 2.7, 3.4, 3.5 和 3.6(長期支持版本 LTS)

注: Django 1.11.x 不支持 Python 3.7


Django框架開發(fā)

創(chuàng)建項(xiàng)目的指令

$ django-admin startproject 項(xiàng)目名稱

如:

$ django-admin startproject mysite1

運(yùn)行

$ cdmysite1

$ python3manage.py runserver

# 或

$ python3manage.py runserver5000# 指定只能本機(jī)使用127.0.0.1的5000端口訪問本機(jī)

Django項(xiàng)目的目錄結(jié)構(gòu)

示例:

$ django-adminstartproject mysite1

$ treemysite1/

mysite1/

├── manage.py

└── mysite1

?? ├── __init__.py

?? ├── settings.py

?? ├── urls.py

?? └── wsgi.py

?

1directory,5files

項(xiàng)目目錄結(jié)構(gòu)解析:

manage.py

此文件是項(xiàng)目管理的主程序,在開發(fā)階段用于管理整個項(xiàng)目的開發(fā)運(yùn)行的調(diào)式

manage.py 包含項(xiàng)目管理的子命令, 如:

python3 manage.py runserver 啟動服務(wù)

python3 manage.py startapp 創(chuàng)建應(yīng)用

python3 manage.py migrate 數(shù)據(jù)庫遷移

...

mysite1 項(xiàng)目包文件夾

項(xiàng)目包的主文件夾(默認(rèn)與項(xiàng)目名稱一致)

__init__.py

包初始化文件,當(dāng)此項(xiàng)目包被導(dǎo)入(import)時此文件會自動運(yùn)行

wsgi.py

WSGI 即 Web Server Gateway Interface

WEB服務(wù)網(wǎng)關(guān)接口的配置文件觉鼻,僅部署項(xiàng)目時使用

urls.py

項(xiàng)目的基礎(chǔ)路由配置文件妇智,所有的動態(tài)路徑必須先走該文件進(jìn)行匹配

settings.py

Django項(xiàng)目的配置文件, 此配置文件中的一些全局變量將為Django框架的運(yùn)行傳遞一些參數(shù)

setting.py 配置文件,啟動服務(wù)時自動調(diào)用沪羔,

此配置文件中也可以定義一些自定義的變量用于作用全局作用域的數(shù)據(jù)傳遞

settings.py 文件介紹

https://docs.djangoproject.com/en/1.11/ref/settings/

BASE_DIR

用于綁定當(dāng)前項(xiàng)目的絕對路徑(動態(tài)計算出來的), 所有文件都可以依懶此路徑

DEBUG

用于配置Django項(xiàng)目的啟用模式, 取值:

True 表示開發(fā)環(huán)境中使用 調(diào)試模式(用于開發(fā)中)

False 表示當(dāng)前項(xiàng)目運(yùn)行在生產(chǎn)環(huán)境中(不啟用調(diào)試)

ALLOWED_HOSTS

設(shè)置允許訪問到本項(xiàng)目的網(wǎng)絡(luò)地址列表,取值:

[] 空列表,表示只有請求頭中host為127.0.0.1, localhost能訪問本項(xiàng)目

['*']缤骨,表示任何請求頭的host都能訪問到當(dāng)前項(xiàng)目

['192.168.1.3', '127.0.0.1'] 表示只有當(dāng)前兩個host頭的值能訪問當(dāng)前項(xiàng)目

注意:

如果要在局域網(wǎng)其它主機(jī)也能訪問此主機(jī),啟動方式應(yīng)使用如下模式:

python3 manage.py runserver 0.0.0.0:5000 # 指定網(wǎng)絡(luò)設(shè)備所有主機(jī)都可以通過5000端口訪問(需加ALLOWED_HOSTS = ['*'])

INSTALLED_APPS

指定當(dāng)前項(xiàng)目中安裝的應(yīng)用列表

MIDDLEWARE

用于注冊中間件

TEMPLATES

用于指定模板的配置信息

DATABASES

用于指定數(shù)據(jù)庫的配置信息

LANGUAGE_CODE

用于指定語言配置

取值:

英文 : "en-us"

中文 : "zh-Hans"

TIME_ZONE

用于指定當(dāng)前服務(wù)器端時區(qū)

取值:

世界標(biāo)準(zhǔn)時間: "UTC"

中國時區(qū) : "Asia/Shanghai"

ROOT_URLCONF

用于配置根級 url 配置 'mysite1.urls'

如:

ROOT_URLCONF = 'mysite1.urls'

注: 此模塊可以通過 from django.conf import settings 導(dǎo)入和使用

URL 介紹

url 即統(tǒng)一資源定位符 Uniform Resource Locator

作用:

用來表示互聯(lián)網(wǎng)上某個資源的地址鸥咖。

說明:

互聯(lián)網(wǎng)上的每個文件都有一個唯一的URL贞盯,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它杠氢。

URL的一般語法格式為:

protocol :// hostname[:port] / path [?query][#fragment]

如:

http://tts.tmooc.cn/video/showVideo?menuId=657421&version=AID201908#subject

說明:

protocol(協(xié)議)

http 通過 HTTP 訪問該資源昂勉。 格式 HTTP://

https 通過安全的 HTTPS 訪問該資源。 格式 HTTPS://

file 資源是本地計算機(jī)上的文件宪睹。格式: file:///

...

hostname(主機(jī)名)

是指存放資源的服務(wù)器的域名系統(tǒng)(DNS) 主機(jī)名愁茁、域名 或 IP 地址。

port(端口號)

整數(shù)亭病,可選鹅很,省略時使用方案的默認(rèn)端口;

各種傳輸協(xié)議都有默認(rèn)的端口號罪帖,如http的默認(rèn)端口為80促煮。

path(路由地址)

由零或多個“/”符號隔開的字符串邮屁,一般用來表示主機(jī)上的一個目錄或文件地址。路由地址決定了服務(wù)器端如何處理這個請求

query(查詢)

可選菠齿,用于給動態(tài)網(wǎng)頁傳遞參數(shù)佑吝,可有多個參數(shù),用“&”符號隔開绳匀,每個參數(shù)的名和值用“=”符號隔開芋忿。

fragment(信息片斷)

字符串,用于指定網(wǎng)絡(luò)資源中的片斷疾棵。例如一個網(wǎng)頁中有多個名詞解釋戈钢,可使用fragment直接定位到某一名詞解釋。

注: [] 代表其中的內(nèi)容可省略

視圖函數(shù)(view)

視圖函數(shù)是用于接收一個瀏覽器請求并通過HttpResponse對象返回數(shù)據(jù)的函數(shù)陋桂。此函數(shù)可以接收瀏覽器請求并根據(jù)業(yè)務(wù)邏輯返回相應(yīng)的內(nèi)容給瀏覽器

視圖處理的函數(shù)的語法格式:

defxxx_view(request[,其它參數(shù)...]):

returnHttpResponse對象

參數(shù):

request用于綁定HttpRequest對象逆趣,通過此對象可以獲取瀏覽器的參數(shù)和數(shù)據(jù)

示例:

視圖處理函數(shù) views.py

# file : <項(xiàng)目名>/views.py

fromdjango.httpimportHttpResponse

defpage1_view(request):

html="<h1>這是第1個頁面</h1>"

returnHttpResponse(html)

Django 中的路由配置

settings.py 中的ROOT_URLCONF 指定了主路由配置列表urlpatterns的文件位置

urls.py 主路由配置文件

# file : <項(xiàng)目名>/urls.py

urlpatterns= [

url(r'^admin/',admin.site.urls),

...# 此處配置主路由

]

urlpatterns 是一個路由-視圖函數(shù)映射關(guān)的列表,此列表的映射關(guān)系由url函數(shù)來確定

url() 函數(shù)

用于描述路由與視圖函數(shù)的對應(yīng)關(guān)系

模塊

from django.conf.urls import url

語法:

url(regex, views, name=None)

參數(shù):

regex: 字符串類型,匹配的請求路徑嗜历,允許是正則表達(dá)式

views: 指定路徑所對應(yīng)的視圖處理函數(shù)的名稱

name: 為地址起別名宣渗,在模板中地址反向解析時使用

每個正則表達(dá)式前面的r表示'\'不轉(zhuǎn)義的原始字符串


練習(xí)

建立一個小網(wǎng)站:

輸入網(wǎng)址: http://127.0.0.1:8000, 在網(wǎng)頁中輸出 : 這是我的首頁

輸入網(wǎng)址: http://127.0.0.1:8000/page1, 在網(wǎng)頁中輸出 : 這是編號為1的網(wǎng)頁

輸入網(wǎng)址: http://127.0.0.1:8000/page2, 在網(wǎng)頁中輸出 : 這是編號為2的網(wǎng)頁

提示: 主頁路由的正則是? r'^$'

思考

建立如上一百個網(wǎng)頁該怎么辦?

帶有分組的路由和視圖函數(shù)

在視圖函數(shù)內(nèi)梨州,可以用正則表達(dá)式分組 () 提取參數(shù)后用函數(shù)位置傳參傳遞給視圖函數(shù)

一個分組表示一個參數(shù),多個參數(shù)需要使用多個分組,并且使用個/隔開

如:

http://127.0.0.1:8000/year/2018

http://127.0.0.1:8000/year/2019

http://127.0.0.1:8000/year/????? # 四位數(shù)字

練習(xí):

定義一個路由的格式為:

http://127.0.0.1:8000/整數(shù)/操作字符串/整數(shù)

從路由中提取數(shù)據(jù)痕囱,做相應(yīng)的操作后返回給瀏覽器

如:

輸入: 127.0.0.1:8000/100/add/200

?? 頁面顯示結(jié)果:300

輸入: 127.0.0.1:8000/100/sub/200

?? 頁面顯示結(jié)果:-100

輸入: 127.0.0.1:8000/100/mul/200

?? 頁面顯示結(jié)果:20000

帶有命名分組的路由和視圖函數(shù)

在url 的正則表達(dá)式中可以使用命名分組(捕獲分組)

說明:

在視圖函數(shù)內(nèi),可以用正則表達(dá)式分組 (?P<name>pattern) 提取參數(shù)后用函數(shù)關(guān)鍵字傳參傳遞給視圖函數(shù)

示例:

路由配置文件

# file : <項(xiàng)目名>/urls.py

# 以下示例匹配

# http://127.0.0.1:8000/person/xiaoming/20

# http://127.0.0.1:8000/person/xiaohong/29

# http://127.0.0.1:8000/person/xiaolan/9

urlpatterns= [

url(r'^admin/',admin.site.urls),

url(r'^person/(?P<name>\w+)/(?P<age>\d{1,2})',views.person_view),

]

練習(xí):

訪問地址:

http://127.0.0.1:8000/birthday/四位數(shù)字/一到兩位數(shù)字/一到兩位數(shù)字

http://127.0.0.1:8000/birthday/一到兩位數(shù)字/一到兩位數(shù)字/四位數(shù)字

最終輸出: 生日為: xxxx年xx月xx日

如:輸入網(wǎng)址: http://127.0.0.1:8000/birthday/2015/12/11顯示為: 生日為:2015年12月11日輸入網(wǎng)址: http://127.0.0.1:8000/birthday/2/28/2008顯示為: 生日為:2008年2月28日


HTTP協(xié)議的請求和響應(yīng)

請求是指瀏覽器端通過HTTP協(xié)議發(fā)送給服務(wù)器端的數(shù)據(jù)

響應(yīng)是指服務(wù)器端接收到請求后做相應(yīng)的處理后再回復(fù)給瀏覽器端的數(shù)據(jù)

HTTP 請求

根據(jù)HTTP標(biāo)準(zhǔn)暴匠,HTTP請求可以使用多種請求方法鞍恢。

HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法(最常用)

HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

HTTP1.1 請求詳述

序號方法描述

1GET請求指定的頁面信息每窖,并返回實(shí)體主體帮掉。

2HEAD類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容窒典,用于獲取報頭

3POST向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)蟆炊。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改瀑志。

4PUT從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容涩搓。

5DELETE請求服務(wù)器刪除指定的頁面。

6CONNECTHTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器劈猪。

7OPTIONS允許客戶端查看服務(wù)器的性能昧甘。

8TRACE回顯服務(wù)器收到的請求,主要用于測試或診斷战得。

HttpRequest對象

視圖函數(shù)的第一個參數(shù)是HttpRequest對象

服務(wù)器接收到http協(xié)議的請求后充边,會根據(jù)請求數(shù)據(jù)報文創(chuàng)建HttpRequest對象

HttpRequest屬性

path_info: URL字符串

method:字符串,表示HTTP請求方法常侦,常用值:'GET'痛黎、'POST'

encoding:字符串予弧,表示提交的數(shù)據(jù)的編碼方式

如果為None則表示使用瀏覽器的默認(rèn)設(shè)置刮吧,一般為'utf-8'

這個屬性是可寫的湖饱,可以通過修改它來修改訪問表單數(shù)據(jù)使用的編碼,接下來對屬性的任何訪問將使用新的encoding值

GET:QueryDict查詢字典的對象杀捻,包含get請求方式的所有數(shù)據(jù)

POST:QueryDict查詢字典的對象井厌,包含post請求方式的所有數(shù)據(jù)

FILES:類似于字典的對象,包含所有的上傳文件信息

COOKIES:Python字典致讥,包含所有的cookie仅仆,鍵和值都為字符串

session:似于字典的對象,表示當(dāng)前的會話垢袱,

body: 字符串墓拜,請求體的內(nèi)容(POST或PUT)

environ: 字符串,客戶端運(yùn)行的環(huán)境變量信息

scheme : 請求協(xié)議('http'/'https')

request.get_full_path() : 請求的完整路徑

request.get_host() : 請求的主機(jī)

request.META : 請求中的元數(shù)據(jù)(消息頭)

request.META['REMOTE_ADDR']? : 客戶端IP地址

HTTP 響應(yīng)

當(dāng)瀏覽者訪問一個網(wǎng)頁時,瀏覽者的瀏覽器會向網(wǎng)頁所在服務(wù)器發(fā)出請求请契。當(dāng)瀏覽器接收并顯示網(wǎng)頁前咳榜,此網(wǎng)頁所在的服務(wù)器會返回一個包含HTTP狀態(tài)碼的信息頭用以響應(yīng)瀏覽器的請求。

HTTP狀態(tài)碼的英文為HTTP Status Code爽锥。

下面是常見的HTTP狀態(tài)碼:

200 - 請求成功

301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL

404 - 請求的資源(網(wǎng)頁等)不存在

500 - 內(nèi)部服務(wù)器錯誤

HTTP狀態(tài)碼分類

HTTP狀態(tài)碼由三個十進(jìn)制數(shù)字組成涌韩,第一個十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的作用氯夷。HTTP狀態(tài)碼共分為5種類型:

分類分類描述

1**信息臣樱,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作

2**成功腮考,操作被成功接收并處理

3**重定向雇毫,需要進(jìn)一步的操作以完成請求

4**客戶端錯誤,請求包含語法錯誤或無法完成請求

5**服務(wù)器錯誤踩蔚,服務(wù)器在處理請求的過程中發(fā)生了錯誤

Django中的響應(yīng)對象HttpResponse:

構(gòu)造函數(shù)格式:

HttpResponse(content=響應(yīng)體, content_type=響應(yīng)體數(shù)據(jù)類型, status=狀態(tài)碼)

作用:

向客戶端瀏覽器返回響應(yīng)棚放,同時攜帶響應(yīng)體內(nèi)容

參數(shù):

content:表示返回的內(nèi)容。

status_code:返回的HTTP響應(yīng)狀態(tài)碼(默認(rèn)為200)寂纪。

content_type:指定返回數(shù)據(jù)的的MIME類型(默認(rèn)為"text/html")席吴。瀏覽器會根據(jù)這個屬性,來顯示數(shù)據(jù)捞蛋。如果是text/html孝冒,那么就會解析這個字符串,如果text/plain拟杉,那么就會顯示一個純文本庄涡。

常用的Content-Type如下:

'text/html'(默認(rèn)的,html文件)

'text/plain'(純文本)

'text/css'(css文件)

'text/javascript'(js文件)

'multipart/form-data'(文件提交)

'application/json'(json傳輸)

'application/xml'(xml文件)

注: 關(guān)鍵字MIME(Multipurpose Internet Mail Extensions)是指多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型搬设。

HttpResponse 子類

類型作用狀態(tài)碼

HttpResponseRedirect重定響302

HttpResponseNotModified未修改304

HttpResponseBadRequest錯誤請求400

HttpResponseNotFound沒有對應(yīng)的資源404

HttpResponseForbidden請求被禁止403

HttpResponseServerError服務(wù)器錯誤500


GET方式傳參

GET請求方式中可以通過查詢字符串(Query String)將數(shù)據(jù)傳遞給服務(wù)器? ?

URL 格式: xxx?參數(shù)名1=值1&參數(shù)名2=值2...

如: http://127.0.0.1:8000/page1?a=100&b=200

服務(wù)器端接收參數(shù)

判斷 request.method 的值判斷請求方式是否是get請求

ifrequest.method=='GET':

處理GET請求時的業(yè)務(wù)邏輯

else:

處理其它請求的業(yè)務(wù)邏輯

獲取客戶端請求GET請求提交的數(shù)據(jù)

語法

request.GET['參數(shù)名']# QueryDict

request.GET.get('參數(shù)名','默認(rèn)值')

request.GET.getlist('參數(shù)名')

# mypage?a=100&b=200&c=300&b=400

# request.GET=QueryDict({'a':['100'], 'b':['200','400'], 'c':['300']})

# a = request.GET['a']

# b = request.GET['b']? # Error

?

?

能夠產(chǎn)生get請求方式的場合

地址欄手動輸入, 如: http://127.0.0.1:8000/mypage?a=100&b=200

<a href="地址?參數(shù)=值&參數(shù)=值">

form表單中的method為get

<formmethod='get'action="/user/login">

姓名:<inputtype="text"name="uname">

</form>

一般查詢字符串的大小會受到瀏覽器的的限制(不建議超過2048字節(jié))

練習(xí):

訪問地址:http://127.0.0.1:8000/sum?start=整數(shù)&stop=整數(shù)&step整=字

輸出結(jié)果為sum(range(start, step, stop)) 和:

如:

輸入網(wǎng)址: http://127.0.0.1:8000/sum?start=1&stop=101&step=1

頁面顯示: 結(jié)果: 5050

輸入網(wǎng)址: http://127.0.0.1:8000/sum?stop=101&step=2

頁面顯示: 結(jié)果: 2550

輸入網(wǎng)址: http://127.0.0.1:8000/sum?start=1&stop=101&step=2

頁面顯示: 結(jié)果: 2500

練習(xí):

訪問地址:http://127.0.0.1:8000/birthday?year=四位整數(shù)&month=整數(shù)&day=整數(shù)

最終輸出: 生日為: xxxx年xx月xx日

如:

輸入網(wǎng)址: http://127.0.0.1:8000/birthday?year=2015&month=12&day=11

顯示為: 生日為:2015年12月11日


POST傳遞參數(shù)

客戶端通過表單等POST請求將數(shù)據(jù)傳遞給服務(wù)器端,如:

<formmethod='post'action="/login">

姓名:<inputtype="text"name="username">

<inputtype='submit'value='登陸'>

</form>

服務(wù)器端接收參數(shù)

通過 request.method 來判斷是否為POST請求,如:

ifrequest.method=='POST':

處理POST請求的數(shù)據(jù)并響應(yīng)

else:

處理非POST請求的響應(yīng)

使用post方式接收客戶端數(shù)據(jù)

方法

request.POST['參數(shù)名']# request.POST 綁定QueryDict

request.POST.get('參數(shù)名','')

request.POST.getlist('參數(shù)名')

取消csrf驗(yàn)證,否則Django將會拒絕客戶端發(fā)來的POST請求

取消 csrf 驗(yàn)證

刪除 settings.py 中 MIDDLEWARE 中的 CsrfViewsMiddleWare 的中間件

MIDDLEWARE= [

?? ...

# 'django.middleware.csrf.CsrfViewMiddleware',

?? ...

]

form 表單的name屬性

在form表單控件提交數(shù)據(jù)時穴店,會自動搜索本表單控件內(nèi)部的子標(biāo)簽的name屬性及相應(yīng)的值撕捍,再將這些名字和值以鍵-值對的形式提交給action指定的服務(wù)器相關(guān)位置

在form內(nèi)能自動搜集到的name屬性的標(biāo)簽的控件有

<inputname='xxx'>

<selectname='yyy'></select>

<textareaname='zzz'></textarea>

如:

<formaction="/page1"method="POST">

<inputname="title"type="text"value="請輸入">

<selectname="gender">

<optionvalue=1>男</option>

<optionvalue=0>女</option>

</select>

<textareaname="comment"rows="5"cols="10">附言...</textarea>

<inputtype="submit"value="提交">

</form>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泣洞,隨后出現(xiàn)的幾起案子忧风,更是在濱河造成了極大的恐慌,老刑警劉巖球凰,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狮腿,死亡現(xiàn)場離奇詭異,居然都是意外死亡呕诉,警方通過查閱死者的電腦和手機(jī)缘厢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甩挫,“玉大人贴硫,你說我怎么就攤上這事∫琳撸” “怎么了英遭?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長删壮。 經(jīng)常有香客問我贪绘,道長,這世上最難降的妖魔是什么央碟? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任税灌,我火速辦了婚禮,結(jié)果婚禮上亿虽,老公的妹妹穿的比我還像新娘菱涤。我一直安慰自己,他們只是感情好洛勉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布粘秆。 她就那樣靜靜地躺著,像睡著了一般收毫。 火紅的嫁衣襯著肌膚如雪攻走。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天此再,我揣著相機(jī)與錄音昔搂,去河邊找鬼。 笑死输拇,一個胖子當(dāng)著我的面吹牛摘符,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逛裤,長吁一口氣:“原來是場噩夢啊……” “哼瘩绒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起带族,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锁荔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炉菲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堕战,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年拍霜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薪介。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡祠饺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汁政,到底是詐尸還是另有隱情道偷,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布记劈,位于F島的核電站勺鸦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏目木。R本人自食惡果不足惜换途,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刽射。 院中可真熱鬧军拟,春花似錦、人聲如沸誓禁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摹恰。三九已至辫继,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俗慈,已是汗流浹背姑宽。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姜盈,地道東北人低千。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親示血。 傳聞我的和親對象是個殘疾皇子棋傍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354