第八章 在線教育平臺(tái)(全局搜索,個(gè)人中心)

全局搜索,用戶中心

標(biāo)簽: django


導(dǎo)航功能條的選中狀態(tài)

搜索

根據(jù)其中request.path 并結(jié)合模板中的slice 函數(shù)進(jìn)行匹配連接中的內(nèi)容進(jìn)行導(dǎo)航欄的選中狀態(tài)確定挺尿。

<nav>
    <div class="nav">
        <div class="wp">
            <ul>
                <li {% if request.path == '/' %}class="active"{% endif %}><a href="{% url 'index' %}">首頁(yè)</a></li>
                <li {% if request.path|slice:'7' == '/course' %}class="active"{% endif %}>
                <a href="{% url 'course:course_list' %}">
                                    公開(kāi)課<img class="hot" src="/static/images/nav_hot.png">
                </a>
                </li>
                <li {% if request.path|slice:'12' == '/org/teacher' %}class="active"{% endif %}>
                    <a href="{% url 'org:teacher_list' %}">授課教師</a>
                </li>
                <li {% if request.path|slice:'9' == '/org/list' %}class="active"{% endif %} ><a href="{% url 'org:org_list' %}">授課機(jī)構(gòu)</a></li>
            </ul>
        </div>
    </div>
</nav>

搜索功能的實(shí)現(xiàn)

通過(guò)js進(jìn)行連接的變更翼雀,并通過(guò)django中orm的__icontains進(jìn)行l(wèi)ike字段的匹配饱苟。

keywords = request.GET.get('keywords', '')
if keywords:
    all_teachers = all_teachers.filter(Q(name__icontains=keywords) | Q(points__icontains=keywords) | Q(work_company__icontains=keywords))

用戶個(gè)人中心

個(gè)人中心

修改界面,找到界面的公共部分狼渊,作為一個(gè)基準(zhǔn)界面箱熬。

{% extends 'common/usercenter_base.html' %}
{% block title %}個(gè)人中心{% endblock %}
{% load staticfiles %}
{% block custom_content %}
    <div class="right">
        <div class="personal_des ">
            <div class="head" style="border:1px solid #eaeaea;">
                <h1>個(gè)人信息</h1>
            </div>
            <div class="inforcon">
                <div class="left" style="width:242px;">
                    <iframe id='frameFile' name='frameFile' style='display: none;'></iframe>
                    <form class="clearfix" id="jsAvatarForm" enctype="multipart/form-data" autocomplete="off" method="post" action="{% url 'user:image_upload' %}" target='frameFile'>
                        <label class="changearea" for="avatarUp">
                            <span id="avatardiv" class="pic">
                                <img width="100" height="100" class="js-img-show" id="avatarShow" src="{{ MEDIA_URL }}{{ request.user.image }}"/>
                            </span>
                            <span class="fl upload-inp-box" style="margin-left:70px;">
                                <span class="button btn-green btn-w100" id="jsAvatarBtn">修改頭像</span>
                                <input type="file" name="image" id="avatarUp" class="js-img-up"/>
                            </span>
                        </label>
                        {% csrf_token %}
                    </form>
                    <div style="border-top:1px solid #eaeaea;margin-top:30px;">
                        <a class="button btn-green btn-w100" id="jsUserResetPwd" style="margin:80px auto;width:100px;">修改密碼</a>
                    </div>
                </div>
                <form class="perinform" id="jsEditUserForm" autocomplete="off">
                    <ul class="right">
                        <li>昵&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;稱:
                           <input type="text" name="nick_name" id="nick_name" value="{{ request.user.nick_name }}" maxlength="10">
                            <i class="error-tips"></i>
                        </li>
                        <li>生&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日:
                           <input type="text" id="birth_day" name="birday" value="{{ request.user.birthday }}" readonly="readonly"/>
                            <i class="error-tips"></i>
                        </li>
                        <li>性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;別:
                            <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio"  name="gender" value="male" {% if request.user.gender == 'male' %}checked="checked"{% endif %}>男</label>
                            <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="gender" value="female" {% if request.user.gender == 'female' %}checked="checked"{% endif %}>女</label>
                        </li>
                        <li class="p_infor_city">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址:
                            <input type="text" name="address" id="address" placeholder="請(qǐng)輸入你的地址" value="{{ request.user.address }}" maxlength="10">
                            <i class="error-tips"></i>
                        </li>
                        <li>手&nbsp;&nbsp;機(jī)&nbsp;&nbsp;號(hào):
                            <input type="text" name="mobile" id="mobile" placeholder="請(qǐng)輸入你的手機(jī)號(hào)碼" value="{{ request.user.mobile }}" maxlength="10">
                        </li>
                        <li>郵&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱:
                            <input class="borderno" type="text" name="email" readonly="readonly" value="{{ request.user.email }}"/>
                            <span class="green changeemai_btn">[修改]</span>
                        </li>
                        <li class="button heibtn">
                            <input type="button" id="jsEditUserBtn" value="保存">
                        </li>
                    </ul>
                    <input type='hidden' name='csrfmiddlewaretoken' value='799Y6iPeEDNSGvrTu3noBrO4MBLv6enY' />
                </form>
            </div>
        </div>
    </div>
{% endblock %}


  • 修改圖片

根據(jù)用戶的model進(jìn)行照片的變更

class UploadImageForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ['image']
        
        
        
class UserUploadImageView(LoginRequireMixin, View):
    """
    用戶修改頭像
    """
    def post(self, request):
        image_form = UploadImageForm(request.POST, request.FILES, instance=request.user)
        if image_form.is_valid():
            image_form.save()
            return HttpResponse("{'status': 'success'}", content_type='application/json')
        else:
            return HttpResponse("{'status': 'fail'}", content_type='application/json')
  • 修改密碼

修改base界面相應(yīng)的彈出以及js提交界面的js文件。

<div class="resetpwdbox dialogbox" id="jsResetDialog">
        <h1>修改密碼</h1>
        <div class="close jsCloseDialog"><img src="/static/images/dig_close.png"/></div>
        <div class="cont">
            <form id="jsResetPwdForm" autocomplete="off">
                <div class="box">
                    <span class="word2" >新&nbsp;&nbsp;密&nbsp;&nbsp;碼</span>
                    <input type="password" id="pwd" name="password1" placeholder="6-20位非中文字符"/>
                </div>
                <div class="box">
                    <span class="word2" >確定密碼</span>
                    <input type="password" id="repwd" name="password2" placeholder="6-20位非中文字符"/>
                </div>
                <div class="error btns" id="jsResetPwdTips"></div>
                <div class="button">
                    <input id="jsResetPwdBtn" type="button" value="提交" />
                </div>
                {% csrf_token %}
            </form>
        </div>
    </div>

    $('#jsResetPwdBtn').click(function(){
        $.ajax({
            cache: false,
            type: "POST",
            dataType:'json',
            url:"/users/update/pwd/",
            data:$('#jsResetPwdForm').serialize(),
            async: true,
            success: function(data) {
                if(data.password1){
                    Dml.fun.showValidateError($("#pwd"), data.password1);
                }else if(data.password2){
                    Dml.fun.showValidateError($("#repwd"), data.password2);
                }else if(data.status == "success"){
                    Dml.fun.showTipsDialog({
                        title:'提交成功',
                        h2:'修改密碼成功狈邑,請(qǐng)重新登錄!',
                    });
                    Dml.fun.winReload();
                }else if(data.msg){
                    Dml.fun.showValidateError($("#pwd"), data.msg);
                    Dml.fun.showValidateError($("#repwd"), data.msg);
                }
            }
        });
    });
    
    
class UpdatePwdView(View):
    """
    用戶修改密碼
    """
    def post(self, request):
        modify_pwd = ModifyForm(request.POST)
        if modify_pwd.is_valid():
            pwd1 = request.POST.get('password1', '')
            pwd2 = request.POST.get('password2', '')
            if pwd1 == pwd2:
                user = request.user
                user.password = make_password(pwd2)
                user.save()
                return HttpResponse('{"status": "success", "msg":"密碼修改成功"}', content_type='application/json')
            else:
                return HttpResponse('{"status": "fail", "msg": "密碼不一致"}', content_type='application/json')
        else:
            return HttpResponse(json.dumps(modify_pwd.errors), content_type='application/json')
  • 所有主菜單欄的用戶信息的回顯城须。
{% if request.user.is_authenticated %}
    <div class="personal">
            <dl class="user fr">
                <dd>{{ request.user.nike_name }}<img class="down fr" src="/static/images/top_down.png"/></dd>
                <dt><img width="20" height="20" src="{{ MEDIA_URL }}{{ request.user.image }}"/></dt>
            </dl>
            <div class="userdetail">
            <dl>
              <dt><img width="80" height="80" src="{{ MEDIA_URL }}{{ request.user.image }}"/></dt>
               <dd>
                 <p>{{ request.user.nike_name }}</p>
                </dd>
            </dl>
            <div class="btn">
                 <a class="personcenter fl" href="{% url 'user:user_center' %}">進(jìn)入個(gè)人中心</a>
                 <a class="fr" href="/logout/">退出</a>
              </div>
            </div>
    </div>
     {% else %}
     <a style="color:white" class="fr registerbtn" href="{% url 'register' %}">注冊(cè)</a>
    <a style="color:white" class="fr loginbtn" href="/login/">登錄</a>
{% endif %}

個(gè)人郵箱的修改

郵箱更改

修改個(gè)人郵箱,需要編寫兩個(gè)接口米苹,其中一個(gè)是郵箱發(fā)送接口糕伐,另一個(gè)是郵箱修改接口

  • 郵箱驗(yàn)證碼發(fā)送接口
class SendEmailView(LoginRequireMixin, View):
    """
    用戶修改郵箱驗(yàn)證碼發(fā)送
    """
    def get(self, request):
        email = request.GET.get('email', '')
        if UserProfile.objects.filter(email=email):
            return HttpResponse('{"email":"郵箱已經(jīng)存在"}',content_type='application/json')
        send_email(email, 'update_email')
        return HttpResponse('{"status": "success", "msg":"郵箱發(fā)送成功"}', content_type='application/json')
  • 郵箱修改驗(yàn)證
class UpdateEmailView(LoginRequireMixin, View):
    """
    用戶郵箱變更
    """
    def post(self, request):
        email = request.POST.get('email', '')
        code = request.POST.get('code', '')
        if EmailVerifyRecord.objects.filter(email=email, code=code, send_type='update_email'):
            user = request.user
            user.email = email
            user.save()
            return HttpResponse('{"status": "success"}', content_type='application/json')
        else:
            return HttpResponse('{"email":"驗(yàn)證碼錯(cuò)誤"}', content_type='application/json')
  • 個(gè)人信息修改內(nèi)容提交
class UserCenterHomeView(LoginRequireMixin, View):
    """
    進(jìn)入用戶中心
    """
    def get(self, request):
        return render(request, 'usercenter-info.html', {})

    # 用戶信息的更改
    def post(self, request):
        existed_record = UpdateInfoForm(request.POST, instance=request.user)
        if existed_record.is_valid():
            existed_record.save()
            return HttpResponse('{"status": "success"}', content_type='application/json')
        else:
            return HttpResponse(json.dumps(existed_record.errors), content_type='application/json')
//修改個(gè)人中心郵箱驗(yàn)證碼
function sendCodeChangeEmail($btn){
    var verify = verifyDialogSubmit(
        [
          {id: '#jsChangeEmail', tips: Dml.Msg.epMail, errorTips: Dml.Msg.erMail, regName: 'email', require: true}
        ]
    );
    if(!verify){
       return;
    }
    $.ajax({
        cache: false,
        type: "get",
        dataType:'json',
        url:"/users/send_emial/",
        data:$('#jsChangeEmailForm').serialize(),
        async: true,
        beforeSend:function(XMLHttpRequest){
            $btn.val("發(fā)送中...");
            $btn.attr('disabled',true);
        },
        success: function(data){
            if(data.email){
                Dml.fun.showValidateError($('#jsChangeEmail'), data.email);
            }else if(data.status == 'success'){
                Dml.fun.showErrorTips($('#jsChangeEmailTips'), "郵箱驗(yàn)證碼已發(fā)送");
            }else if(data.status == 'failure'){
                 Dml.fun.showValidateError($('#jsChangeEmail'), "郵箱驗(yàn)證碼發(fā)送失敗");
            }else if(data.status == 'success'){
            }
        },
        complete: function(XMLHttpRequest){
            $btn.val("獲取驗(yàn)證碼");
            $btn.removeAttr("disabled");
        }
    });

}
//個(gè)人資料郵箱修改
function changeEmailSubmit($btn){
var verify = verifyDialogSubmit(
        [
          {id: '#jsChangeEmail', tips: Dml.Msg.epMail, errorTips: Dml.Msg.erMail, regName: 'email', require: true},
        ]
    );
    if(!verify){
       return;
    }
    $.ajax({
        cache: false,
        type: 'post',
        dataType:'json',
        url:"/users/update_emial/ ",
        data:$('#jsChangeEmailForm').serialize(),
        async: true,
        beforeSend:function(XMLHttpRequest){
            $btn.val("發(fā)送中...");
            $btn.attr('disabled',true);
            $("#jsChangeEmailTips").html("驗(yàn)證中...").show(500);
        },
        success: function(data) {
            if(data.email){
                Dml.fun.showValidateError($('#jsChangeEmail'), data.email);
            }else if(data.status == "success"){
                Dml.fun.showErrorTips($('#jsChangePhoneTips'), "郵箱信息更新成功");
                setTimeout(function(){location.reload();},1000);
            }else{
                 Dml.fun.showValidateError($('#jsChangeEmail'), "郵箱信息更新失敗");
            }
        },
        complete: function(XMLHttpRequest){
            $btn.val("完成");
            $btn.removeAttr("disabled");
        }
    });
}

$(function(){
    //個(gè)人資料修改密碼
    $('#jsUserResetPwd').on('click', function(){
        Dml.fun.showDialog('#jsResetDialog', '#jsResetPwdTips');
    });

    $('#jsResetPwdBtn').click(function(){
        $.ajax({
            cache: false,
            type: "POST",
            dataType:'json',
            url:"/users/update/pwd/",
            data:$('#jsResetPwdForm').serialize(),
            async: true,
            success: function(data) {
                if(data.password1){
                    Dml.fun.showValidateError($("#pwd"), data.password1);
                }else if(data.password2){
                    Dml.fun.showValidateError($("#repwd"), data.password2);
                }else if(data.status == "success"){
                    Dml.fun.showTipsDialog({
                        title:'提交成功',
                        h2:'修改密碼成功,請(qǐng)重新登錄!',
                    });
                    Dml.fun.winReload();
                }else if(data.msg){
                    Dml.fun.showValidateError($("#pwd"), data.msg);
                    Dml.fun.showValidateError($("#repwd"), data.msg);
                }
            }
        });
    });

    //個(gè)人資料頭像
    $('.js-img-up').uploadPreview({ Img: ".js-img-show", Width: 94, Height: 94 ,Callback:function(){
        $('#jsAvatarForm').submit();
    }});


    $('.changeemai_btn').click(function(){
        Dml.fun.showDialog('#jsChangeEmailDialog', '#jsChangePhoneTips' ,'jsChangeEmailTips');
    });
    $('#jsChangeEmailCodeBtn').on('click', function(){
        sendCodeChangeEmail($(this));
    });
    $('#jsChangeEmailBtn').on('click', function(){
        changeEmailSubmit($(this));
    });


    //input獲得焦點(diǎn)樣式
    $('.perinform input[type=text]').focus(function(){
        $(this).parent('li').addClass('focus');
    });
    $('.perinform input[type=text]').blur(function(){
        $(this).parent('li').removeClass('focus');
    });

    laydate({
        elem: '#birth_day',
        format: 'YYYY-MM-DD',
        max: laydate.now()
    });

    verify(
        [
            {id: '#nick_name', tips: Dml.Msg.epNickName, require: true}
        ]
    );
    //保存?zhèn)€人資料
    $('#jsEditUserBtn').on('click', function(){
        var _self = $(this),
            $jsEditUserForm = $('#jsEditUserForm')
            verify = verifySubmit(
            [
                {id: '#nick_name', tips: Dml.Msg.epNickName, require: true}
            ]
        );
        if(!verify){
           return;
        }
        $.ajax({
            cache: false,
            type: 'post',
            dataType:'json',
            url:"/users/info/",
            data:$jsEditUserForm.serialize(),
            async: true,
            beforeSend:function(XMLHttpRequest){
                _self.val("保存中...");
                _self.attr('disabled',true);
            },
            success: function(data) {
                if(data.nike_name){
                    _showValidateError($('#nick_name'), data.nike_name);
                }else if(data.birthday){
                   _showValidateError($('#birth_day'), data.birthday);
                }else if(data.address){
                   _showValidateError($('#address'), data.address);
                }else if(data.status == "failure"){
                     Dml.fun.showTipsDialog({
                        title: '保存失敗',
                        h2: data.msg
                    });
                }else if(data.status == "success"){
                    Dml.fun.showTipsDialog({
                        title: '保存成功',
                        h2: '個(gè)人信息修改成功蘸嘶!'
                    });
                    setTimeout(function(){window.location.href = window.location.href;},1500);
                }
            },
            complete: function(XMLHttpRequest){
                _self.val("保存");
                _self.removeAttr("disabled");
            }
        });
    });


});

用戶收藏界面

其中用戶三個(gè)界面都是一樣的邏輯良瞧,以一個(gè)為例講解,其中训唱,用戶的機(jī)構(gòu)收藏褥蚯,通過(guò)查找用戶收藏表,找到所有收藏的機(jī)構(gòu)的id况增,在獲得所有機(jī)構(gòu)的信息放入集合中赞庶,在做前端展示。

class MyFavOrgView(LoginRequireMixin, View):
    """
    用戶收藏的機(jī)構(gòu)
    """
    def get(self, request):
        current_nav = 'user_fav'
        org_list = []
        fav_orgs = UserFavorite.objects.filter(user=request.user, fav_type=2)
        for fav_org in fav_orgs:
            org_id = fav_org.fav_id
            org = CourseOrg.objects.get(id=org_id)
            org_list.append(org)
        return render(request, 'usercenter-fav-org.html', {
            'org_list': org_list,
            'current_nav': current_nav
        })

{% extends 'common/usercenter_base.html' %}
{% block title %}個(gè)人中心{% endblock %}
{% load staticfiles %}
{% block custom_bread %}
     <section>
        <div class="wp">
            <ul  class="crumbs">
                <li><a href="index.html">首頁(yè)</a>></li>
                <li><a href="/user/home/">個(gè)人中心</a>></li>
                <li>我的收藏</li>
            </ul>
        </div>
    </section>
{% endblock %}
{% block custom_content %}
    <div class="right" >
            <div class="personal_des Releasecont">
                <div class="head">
                    <h1>我的收藏</h1>
                </div>

            </div>
            <div class="personal_des permessage">
                <div class="head">
                    <ul class="tab_header messagehead">
                        <li class="active"><a href="{% url 'user:fav_org' %}">課程機(jī)構(gòu)</a> </li>
                        <li><a href="{% url 'user:fav_teacher' %}">授課教師 </a></li>
                        <li><a href="{% url 'user:fav_course' %}">公開(kāi)課程</a></li>
                    </ul>
                </div>
                <div class="messagelist">
                    {% for org in org_list %}
                    <div class="messages butler_list company company-fav-box">
                        <dl class="des fr">
                            <dt>
                                <a href="{% url 'org:org_home' org.id %}">
                                    <img width="160" height="90" src="{{ MEDIA_URL }}{{ org.image }}"/>
                                </a>
                            </dt>
                            <dd>
                                <h1><a href="{% url 'org:org_home' org.id %}">{{ org.name }}</a></h1>
                                <div class="pic fl" style="width:auto;">

                                    <img src="{% static 'images/authentication.png' %}"/>


                                    <img src="{% static 'images/gold.png' %}"/>

                                </div>
                                <span class="c8 clear">{{ org.address }}</span>
                                <div class="delete jsDeleteFav_org" data-favid="{{ org.id }}"></div>
                            </dd>
                        </dl>
                    </div>
                    {% endfor %}

                </div>
            </div>
        </div>
{% endblock %}


消息導(dǎo)航欄提示

在usermodel下添加一個(gè)方法澳骤,獲取用戶消息總數(shù)歧强,并進(jìn)行顯示

class UserProfile(AbstractUser):
    nike_name = models.CharField(max_length=64, verbose_name=u'用戶別名', default='')
    birthday = models.DateField(verbose_name=u'生日', null=True, blank=True)
    gender = models.CharField(max_length=32, choices=(('male', u'男'), ('female', u'女')), default='')
    address = models.CharField(max_length=128, verbose_name=u'地址', null=True, blank=True, default='')
    mobile = models.CharField(max_length=11, verbose_name=u'手機(jī)號(hào)', null=True, blank=True, default='')
    image = models.ImageField(upload_to='image/%Y/%m', default='image/default.png', max_length=128)

    class Meta:
        verbose_name = u'用戶基本信息表'
        verbose_name_plural = verbose_name

    def __unicode__(self):
        return self.username

    def get_message_count(self):
        # 獲取用戶未讀消息數(shù)量
        from operation.models import UserMessage
        return UserMessage.objects.filter(user=self.id, has_read=0).count()
   <a href="usercenter-message.html">
        <div class="msg-num"><span id="MsgNum">{{ request.user.get_message_count }}</span></div>
    </a>

  • 本篇博客原視頻博主[慕課在線教育平臺(tái)]
  • 本篇博客撰寫人: XiaoJinZi 轉(zhuǎn)載請(qǐng)注明出處
  • 學(xué)生能力有限 附上郵箱: 986209501@qq.com 不足以及誤處請(qǐng)大佬指責(zé)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宴凉,隨后出現(xiàn)的幾起案子誊锭,更是在濱河造成了極大的恐慌,老刑警劉巖弥锄,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丧靡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡籽暇,警方通過(guò)查閱死者的電腦和手機(jī)温治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)戒悠,“玉大人熬荆,你說(shuō)我怎么就攤上這事〕窈” “怎么了卤恳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵累盗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我突琳,道長(zhǎng)若债,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任拆融,我火速辦了婚禮蠢琳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镜豹。我一直安慰自己傲须,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布趟脂。 她就那樣靜靜地躺著泰讽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪散怖。 梳的紋絲不亂的頭發(fā)上菇绵,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天肄渗,我揣著相機(jī)與錄音镇眷,去河邊找鬼。 笑死翎嫡,一個(gè)胖子當(dāng)著我的面吹牛欠动,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惑申,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼具伍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了圈驼?” 一聲冷哼從身側(cè)響起人芽,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绩脆,沒(méi)想到半個(gè)月后萤厅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靴迫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年惕味,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玉锌。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡名挥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出主守,到底是詐尸還是另有隱情禀倔,我是刑警寧澤榄融,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站救湖,受9級(jí)特大地震影響剃袍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捎谨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一民效、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涛救,春花似錦畏邢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蹭沛,卻和暖如春臂寝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摊灭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工咆贬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帚呼。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓掏缎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親煤杀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眷蜈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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