购物车功能完善

课程的展示

  1. 在course的视图函数中:调用course.html
def course_handler(request,course_id):
    context= request.context
    try:
        course = Course.objects.get(id =course_id)
        session_user = request.session.get('session_user',None)
        if session_user:
            context['views_perssion']= User.objects.filter(id=session_user.get('id'),userBuyer_set__id=course.id).exists()
        context['course']= course
        return render(request,'course.html',context)
    except:
        return HttpResponse(status=404)


2)配置course.html文件:

{% extends 'base.html' %}

{% block title %}
    Python语言基础
{% endblock %}

{% block article %}
    <section class="main_section">
        <section class="course_detail">
            <img src="/{{ course.imgname }}" alt="">
            <div class="course_detail_div">
                <h1>{{ course.courseName }}</h1>
                <p>课程种类:{{ course.pCategory.name }}</p>
                <p>发布时间:{{ course.createDatetime|date:'Y-m-d' }}</p>
                <p>价格:<span class="price">{{ course.price }}</span></p>
                <p>
                    {% if not views_perssion %}
                    <a href="{% url 'user_addShoppingCart' course.id %}">加入购物车</a>
                    <a href="{% url 'user_purcharse' course.id %}">立即购买</a>
                    {% else %}
                    <a href="{% url 'course_video' course.id %}">立即观看</a>
                    {% endif %}
                </p>
            </div>
        </section>
        <section class="course_summary">
            <h2>[课程介绍]</h2>
            <p class="summary_p">
                {{ course.summary }}
            </p>
        </section>
    </section>
{% endblock %}

添加购物车功能

在user的views视图函数中,设置购物车功能:

from course.models import Course
def addShoppingCart_handler(request,course_id):
    context = request.context
    try:
        course = Course.objects.get(id=course_id)
        session_user = request.session['session_user']
        user =User.objects.get(id = session_user.get('id'))
        user.userShoppingcart_set.add(course)
        user.save()
        context['message'] = '添加购物车成功'
    except:
          context['message']= '添加购物车失败'
    return render(request,'user_message.html',context)

使它返回一个信息,新建一个user_message.html来接受message;

{% extends 'base.html' %}

{% block title %}

{% endblock %}

{% block article %}
    <section class="main_section">
        <hr>
        <section id="user_manage">
            <nav>
                <p><a href="user.html">个人资料</a></p>
                <p><a href="user_course.html">我的课程</a></p>
                <p><a href="user_shoppingcart.html">购物车</a></p>
            </nav>
            <section class="user_info">
                <div class="user_info_wrapper">
                   <h1>
                        {{ message }}   < !-- 加粗显示 -->
                    </h1>

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


为了使其导入css文件,需要在base文件中修改内容,将前面的…去掉(link rel;script中的…)为了使图片加载成功,把所有static前面的…全部去掉:

<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
    <link rel="stylesheet" href="/static/css/main.css">
    <script type="text/javascript" src="/static/js/main.js"></script>
</head>

购物车显示

1)根据路由映射来找到urls地址,改变所有的板块功能中含有模块的信息(改变的内容如下):

<p><a href="{% url 'user_index' %}">个人资料</a></p>
                <p><a href="{% url 'user_course' %}">我的课程</a></p>
                <p><a href="{% url 'user_shoppingCart' %}">购物车</a></p>

2)点击购物车,显示为None,所以让它返回模板,而不是None:

def shoppingCart_handler(request):
    return render(request,'user_shoppingcart.html')

3)配置购物车显示页面:
在视图函数中购买用户的信息:

def shoppingCart_handler(request):
    context = request.context
    session_user = request.session['session_user']
    course_s = User.objects.get(id=session_user.get('id')).userShoppingcart_set.all()
    context['course_s'] = course_s
    return render(request,'user_shoppingcart.html',context)

配置购物车的HTML文件,让其显示购买用户的信息,课程的种类、时间、价格(修改的内容如下):

 </tr>
                        {% for course in course_s %}
                        <tr class="user_info_shopping_tr">
                            <td>{{ course.courseName }}</td>
                            <td style="color:red;">{{ course.price }}</td>
                            <td>{{ course.createDatetime|date:'Y-m-d' }}</td>
                            <td><a href="{% url 'user_purcharse' course.id %}">立即购买</a></td>
                        </tr>
                        {% endfor %}

购买课程

在视图函数中设置:

def purchase_handler(request,course_id):
    context= request.context
    try:
        course = Course.objects.get(id=course_id)
        session_user = request.session['session_user']
        user = User.objects.get(id = session_user.get('id'))
        if user.money >= course.price:
            user.userBuyer_set.add(course)
            user.money -=course.price
            user.save()
            context['message'] = '购买成功'
        else:
            context['message'] = '余额不足'
    except:
        context['message'] = '购买失败'
    finally:
        return render(request,'user_message.html',context)

课程页的展示

添加视图函数:

def shoppingCart_handler(request):
    context = request.context
    session_user = request.session['session_user']
    course_s = User.objects.get(id=session_user.get('id')).userShoppingcart_set.all()
    context['course_s'] = course_s
    return render(request,'user_shoppingcart.html',context)

配置HTML:

</tr>
                        {% for course in course_s %}
                        <tr class="user_info_course_tr">
                            <td>{{ course.courseName }}</td>
                            <td>{{ course.price }}</td>
                            <td><a href="{% url 'course_video' course.id %}">立即观看</a></td>
                        </tr>
                        {% endfor %}
                    </table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值