django框架的路由

django2 路由支持正则匹配,如:

re_path(r'^category/(?P<category_id>\d+)/$',CourseCategoryView.as_view(),name="course_category"),
视图函数需要接收一个category_id的参数如:
class CourseCategoryView(View):
"""课程类别"""
def get(self,request,category_id):
pass
不然会报错,name的作用:后端可以通过reverse()动态生成url,使用如下:
from django.urls import reverse

class CourseCategoryView(View):
"""课程类别"""
def get(self,request,category_id):
course = Course.objects.filter(category=category_id).order_by("-fav_nums")
try:
cur_page = request.GET.get('num', 1)
except Exception as e:
cur_page = 1
page = Pagination(cur_page, course.count())
category = Category.objects.all()
if course:
url = reverse('course:course_category',kwargs={'category_id':category_id})
temp = '<a href="{0}" class="active">{1}</a>'.format(url, course[0].category.name)
page_str = page.get_page_str(url)
return render(request,"course/course-category.html",
{"course_list":course[page.start:page.end_count],
"page_str": page_str,
"category_list": category,
"temp": mark_safe(temp)
})
else:
return redirect(reverse('course:course_list'))

 前端使用如下:

{% load staticfiles %}
<a href="{% url 'course:course_category' category_id %}">计算机</a>

pip2 --default-timeout=100 install -U Pillow

05-02 08:11