NoReverseMatch at /wiki/CSS Reverse for

我试图在维基页面上放置一个编辑按钮,但它给了我这个错误:


NoReverseMatch at /wiki/CSS Reverse for 'edit_pagina' with no arguments not found. 尝试了 1 种模式:['edit/(?P[^/]+)$']


urls.py:


app_name = "encyclopedia"


urlpatterns = [

    path("", views.index, name="index"),

    path("wiki/<str:page>", views.wiki_page, name="wiki_page"),

    path("create", views.add_entry, name="add_entry"),

    path("search", views.search, name="search"),

    path("edit/<str:editPage>", views.edit_page, name="edit_page")

]

views.py:


def get_entry(title):

    """

    Retrieves an encyclopedia entry by its title. If no such

    entry exists, the function returns None.

    """

    try:

        f = default_storage.open(f"entries/{title}.md")

        return f.read().decode("utf-8")

    except FileNotFoundError:

        return None


def edit_page(request, editPage):

    content = util.get_entry(editPage)

    return render(request, "encyclopedia/edit.html", {

        "page_title": editPage,

        "content": content

    })

编辑.html:


{% extends "encyclopedia/layout.html" %}


{% block title %}

    {{ page_title }}

{% endblock %}


{% block body %}

    <form action="{% url 'edit_page' %}" method="POST">

        {% csrf_token %} 

        <h1>Edit Page</h1>

        <textarea name="edit-content" id="textarea-content">{{ content }}</textarea>

        <button class="btn btn-primary" id="save-edit" type="submit">save changes</button>

    </form>

{% endblock %}



慕莱坞森
浏览 132回答 3
3回答

POPMUISE

您没有为您的网址提供所需的参数。所以你需要改变:{% url 'edit_page' %}到:{% url 'edit_page' page_title %}假设这page_title将为您提供要编辑的相关页面。

吃鸡游戏

将您的edit.html更改为:<form&nbsp;action="{%&nbsp;url&nbsp;'encyclopedia:edit_page'&nbsp;page_title&nbsp;%}"&nbsp;method="POST">

MYYA

您需要提供editPage参数以便 Django 可以反转 URL:{%&nbsp;url&nbsp;'edit_page'&nbsp;page_title&nbsp;%}在您的情况下,我正在使用,page_title因为您"page_title": editPage,在模板上下文中进行了设置。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python