首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NoReverseMatch at /project

NoReverseMatch at /project
EN

Stack Overflow用户
提问于 2018-06-30 13:21:16
回答 1查看 483关注 0票数 1

我对Django很陌生。我创建了一个简单的createview,然后也尝试了updateview,但是我得到了NoReverseMatch错误。我尝试了很多在网上建议的方法,但它们似乎不起作用。这是我得到的NoReverseMatchError错误的屏幕截图

下面是我的档案

urls.py

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

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$',views.AboutView.as_view(),name='about'),
url(r'^blogs/$',views.BlogsView.as_view(),name='blog'),
url(r'^project/$',views.ProjectListView.as_view(),name='project_list'), 
url(r'^project/(?P<pk>\d+)/$',views.ProjectDetailView.as_view(),name='project_detail'),
url(r'^project/create/$',views.ProjectCreateView.as_view(),name='project_create'),
url(r'^project/(?P<pk>\d+)/$',views.ProjectUpdateView.as_view(),name='update'),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Views.py

代码语言:javascript
运行
复制
from django.shortcuts import render,redirect
from django.views.generic import TemplateView,ListView,DetailView,CreateView,UpdateView
from mapp.models import Project
from mapp.forms import ProjectCreateForm,ProjectUpdateForm

# Create your views here.

class AboutView(TemplateView):
    template_name='about.html'

class BlogsView(TemplateView):
    template_name='blogs.html'

class ProjectListView(ListView):
    model=Project

class ProjectDetailView(DetailView):
    model=Project

class ProjectCreateView(CreateView):
    model=Project
    form_class=ProjectCreateForm
    redirect_field_name='mapp/project_detail.html'

class ProjectUpdateView(UpdateView):
    model=Project
    form_class=ProjectUpdateForm
    redirect_field_name='mapp/project_detail.html'

Project_detail.html

代码语言:javascript
运行
复制
{% extends 'base.html'%}

{% block content %}
<h1>Project Details</h1>
    <div class="container">
        <h2>{{project.pname}}</h2>
        <img src="{{project.pimage.url}}"></img>
        <h2>{{project.ptech}}</h2>
        <h2>{{project.pdetails}}</h2>
    </div>

    <div class="container">
        <p><a href="{%url 'update' pk=self.pk %}">Update</a>
    </div>

{% endblock %}

Forms.py

代码语言:javascript
运行
复制
from django import forms
from mapp.models import Project

class ProjectCreateForm(forms.ModelForm):   
    class Meta:
        model=Project
        fields=('pname','pimage','ptech','pdetails')

class ProjectUpdateForm(forms.ModelForm):   
    class Meta:
        model=Project
        fields=('pname','pimage','ptech','pdetails')

Project_form.html

代码语言:javascript
运行
复制
{% extends 'base.html' %}

{% block content %}

<form class="project-form" method="POST" enctype="multipart/form-data">
    <div class="jumbotron">
        {% csrf_token %}
        {{form.as_p}}
        <button type="submit" class="save btn btn-default">Save</button>
    </div>
</form>

{% endblock %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-30 13:27:14

看上去你的羽绒服没有被传递到视图中。尝试将模板中的self.id更改为project.id

代码语言:javascript
运行
复制
{% extends 'base.html'%}

{% block content %}
<h1>Project Details</h1>
    <div class="container">
        <h2>{{project.pname}}</h2>
        <img src="{{project.pimage.url}}"></img>
        <h2>{{project.ptech}}</h2>
        <h2>{{project.pdetails}}</h2>
    </div>

    <div class="container">
        <p><a href="{%url 'update' pk=project.pk %}">Update</a>
    </div>

{% endblock %}

此外,您的详细信息和更新视图具有相同的url。尝试添加一些东西,让它们与众不同

代码语言:javascript
运行
复制
url(r'^project/detail/(?P<pk>\d+)/$',views.ProjectDetailView.as_view(),name='project_detail'),
url(r'^project/create/$',views.ProjectCreateView.as_view(),name='project_create'),
url(r'^project/update/(?P<pk>\d+)/$',views.ProjectUpdateView.as_view(),name='update'),

否则它就找不到更新视图了。

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

https://stackoverflow.com/questions/51115319

复制
相关文章

相似问题

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