Python 如何在Django中获取帖子详细信息

Python 如何在Django中获取帖子详细信息,python,django,Python,Django,现在,我正在创建一个网站。在这个网站上,我做了一个创建帖子的部分。我可以添加新帖子-我的意思是,当我添加一些内容时,我可以在管理面板中看到- 但在我单击“保存”后,会发生这种情况 NoReverseMatch at /post/new/ Reverse for 'post_detail' not found. 'post_detail' is not a valid view function or pattern name. blog/views.py def post_list(req

现在,我正在创建一个网站。在这个网站上,我做了一个创建帖子的部分。我可以添加新帖子-我的意思是,当我添加一些内容时,我可以在管理面板中看到- 但在我单击“保存”后,会发生这种情况

NoReverseMatch at /post/new/

Reverse for 'post_detail' not found. 'post_detail' is not a valid view function or pattern name.

blog/views.py

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {})
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})
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]
urlpatterns = [
    ...
    url(r'^post/detail/$', views.post_detail, name='post_detail'),
]
def post_detail(request, post_id):
    # do something
blog/post_detail.html

{% extends 'blog/base.html' %}

{% block content %}
    <div class="post">
        {% if post.published_date %}
            <div class="date">
                {{ post.published_date }}
            </div>
        {% endif %}
        <a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
        <h1>{{ post.title }}</h1>
        <p>{{ post.text|linebreaksbr }}</p>
    </div>
{% endblock %}

如何解决此问题?

您需要创建另一个
视图
url
,在您的情况下,该视图与名称
post\u detail
一起创建,当您执行以下操作时:

def post_new(request):
    ...
    # here it will look to `urls.py` and will search the url with the name
    # post_detail, but you don't have it.
    return redirect('post_detail', pk=post.pk)
只需创建新的
url
视图

blog/url.py

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {})
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})
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]
urlpatterns = [
    ...
    url(r'^post/detail/$', views.post_detail, name='post_detail'),
]
def post_detail(request, post_id):
    # do something
blog/views.py

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {})
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})
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]
urlpatterns = [
    ...
    url(r'^post/detail/$', views.post_detail, name='post_detail'),
]
def post_detail(request, post_id):
    # do something

您需要创建另一个
视图
url
,在您的情况下,该视图与name
post\u detail
一起,当您执行以下操作时:

def post_new(request):
    ...
    # here it will look to `urls.py` and will search the url with the name
    # post_detail, but you don't have it.
    return redirect('post_detail', pk=post.pk)
只需创建新的
url
视图

blog/url.py

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {})
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})
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]
urlpatterns = [
    ...
    url(r'^post/detail/$', views.post_detail, name='post_detail'),
]
def post_detail(request, post_id):
    # do something
blog/views.py

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {})
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})
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]
urlpatterns = [
    ...
    url(r'^post/detail/$', views.post_detail, name='post_detail'),
]
def post_detail(request, post_id):
    # do something

就像上面说的,你试图重定向到一个post_uu视图,但你没有定义它。就像上面说的,你试图重定向到一个post_uu视图,但你没有定义它。