课程的展示
- 在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>