首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到具有参数'(9,)‘和关键字参数'{}’的'edit‘的反向。0个模式已尝试:[]

找不到具有参数'(9,)‘和关键字参数'{}’的'edit‘的反向。0个模式已尝试:[]
EN

Stack Overflow用户
提问于 2016-09-21 02:27:06
回答 1查看 1.9K关注 0票数 1

当我尝试访问django中的编辑链接时,我得到了一个错误,我已经在堆栈溢出上找到了这里,但我还没有找到适合我的解决方案。

错误:异常类型: NoReverseMatch异常值:找不到参数为'(9,)‘和关键字参数为'{}’的'edit‘的反向。尝试了0个模式:找不到[]个参数'{}‘。0个模式已尝试:[]

这是我的urls.py

代码语言:javascript
复制
from django.conf.urls import url, include
from django.contrib import admin
from posts import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^create/$', views.create, name='create'),
    url(r'^(?P<id>\d+)/$', views.show_post, name = 'show_post'),
    url(r'^(?P<id>\d+)/edit/$', views.update_post, name = 'update_post'),
    url(r'^(?P<id>\d+)/delete/$', views.delete_post),
]

views.py

代码语言:javascript
复制
from django.contrib import messages
from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponse, HttpResponseRedirect

from .forms import PostForm
from .models import Post

# Create your views here.

def index(request):
    post_list = Post.objects.order_by('-created_date')[:10]
    context = {'post_list': post_list}
    return render(request, 'index.html', context)

def create(request):
    form = PostForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        #flass messages
        messages.success(request, "Successfully created")
        return HttpResponseRedirect(instance.get_absolute_url())


    context = {
        "form":form,
    }
    return render(request, 'post_form.html', context)   


def show_post(request, id=None):
    instance = get_object_or_404(Post, id=id)
    context = {'instance': instance}
    return render(request, 'show_post.html', context)


def update_post(request, id=None):
    instance = get_object_or_404(Post, id=id)
    form = PostForm(request.POST or None, instance=instance)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        messages.success(request, "Post updated")
        return HttpResponseRedirect(instance.get_absolute_url())
    context = {
        "form":form,
        "instance":instance
    }
    return render(request, 'post_form.html', context)


def delete_post(request, id=None):
    instance = get_object_or_404(Post, id=id)
    instance.delete()
    messages.success(request, "Successfully deleted")
    return redirect("posts:index")

show_post.html

代码语言:javascript
复制
{% extends "base.html" %}

<div class="container">
{% block content  %}
    <h1> {{instance.title}} </h1>
    <h3>{{instance.content| linebreaks}} </h3>
    <a href="{% url 'posts:index' %}"> Home</a> | <a href="{{instance.url}}" target="_blank" > visit url</a> | 
    <a href="{% url 'posts:update_post' %}"> Edit</a> 

{% endblock %}

</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-21 02:45:51

您需要使用命名空间。您应该使用'posts:edit',而不是'edit'

或者'posts:update_post',这取决于您在urls.py中使用的名称。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39601272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档