django - Django中的URL路径查找器-当它不断将我重定向到主视图时有什么解决方法吗?
问题描述
对不起,我是一个令人尴尬的菜鸟,但我已经成功完成了 99% 的 Django Girls 教程,只是意识到我的基本博客网站中有一个基本功能不起作用 - 主视图上的帖子标题没有链接到他们各自的帖子视图,即使代码对我来说似乎没问题......我猜我真的错过了一个明显的错误!我正在考虑从pk切换到slug,这可能是一个有效的解决方法吗?
视图.py
from django.shortcuts import render, get_object_or_404
from django.shortcuts import redirect
from django.utils import timezone
from .models import Post
from .forms import PostForm
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
网址.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_new, name='post_new'),
path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
]
post_detail.html
{% extends 'blog/base.html' %}
{% block content %}
<article class="post">
<aside class="actions">
{% if user.is_authenticated %}
<a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}">
{% include './icons/pencil-fill.svg' %}
</a>
{% endif %}
</aside>
{% if post.published_date %}
<time class="date">
{{ post.published_date }}
</time>
{% endif %}
<h2>{{ post.title }}</h2>
<p>{{ post.text|linebreaksbr }}</p>
</article>
{% endblock %}
post_list.html
% extends 'blog/base.html' %}
{% block content %}
{% for post in posts %}
<article class="post">
<time class="date">
{{ post.published_date }}
</time>
<h2><a href="">{{ post.title }}</a></h2>
<p>{{ post.text|linebreaksbr }}</p>
</article>
{% endfor %}
{% endblock %}
感谢您的耐心等待!
解决方案
推荐阅读
- android - 布局中的数据绑定 onTouch
- reactjs - 部署反应应用程序后,图像未显示在 gh 页面上
- c# - Outlook 加载项开发 - VSTO 与 Web,是否可以更改表单?
- php - 如何使用 php 隐藏浏览器位置权限弹出窗口?
- node.js - 废弃但正在运行的 Vue 项目中的 Sass 加载程序问题
- ecmascript-6 - React-Create-App 创建 App.js,但使用旧的 js 语法
- image - 计算机视觉:在大型 2D 自上而下地图中定位地面图像
- c - 即使多个线程正在运行,OpenMP 也不会减少运行时间。怎么会这样
- asp.net - 如何在不同的服务器 IIS 中托管 asp.net core 子应用程序?
- angular - 如何修复角度下拉列表中的重复数据