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>
来源: http://www.bubuko.com/infodetail-3003907.html