【发布时间】:2019-08-05 22:01:32
【问题描述】:
我希望我的 URL 在 django 中有 slug 而不是 post ID
这是我的 urls.py
from django.urls import path, re_path
from blog.views import(
blog_post_detail_view,
blog_post_list_view,
blog_post_update_view,
blog_post_delete_view,)
urlpatterns = [
path('', blog_post_list_view),
path('<str:slug>/', blog_post_detail_view),
path('<str:slug>/edit/', blog_post_update_view),
path('<str:slug>/delete/', blog_post_delete_view), ]
models.py
from django.shortcuts import render, get_object_or_404
from django.http import Http404
from .models import BlogPost
def blog_post_list_view(request):
qs = BlogPost.objects.all()
template_name = 'blog_post_list.html'
context = {'object_list': qs}
return render(request, template_name, context)
def blog_post_create_view(request):
template_name = 'blog_post_create.html'
context = {'form': None}
return render(request, template_name, context)
def blog_post_detail_view(request, slug):
obj = get_object_or_404(BlogPost, slug=slug)
template_name = 'blog_post_detail.html'
context = {"object": obj}
return render(request, template_name, context)
def blog_post_update_view():
obj = get_object_or_404(BlogPost, slug=slug)
template_name = 'blog_post_update.html'
context = {"object": obj, 'form': None}
return render(request, template_name, context)
def blog_post_delete_view():
obj = get_object_or_404(BlogPost, slug=slug)
template_name = 'blog_post_delete.html'
context = {"object": obj}
return render(request, template_name, context
)
我希望 url 读取 http://127.0.0.1:8000/admin/blog/blogpost/i-need-this/change/ 而不是 http://127.0.0.1:8000/admin/blog/blogpost/3/change/
【问题讨论】:
标签: django