我对Django很陌生。我创建了一个简单的createview,然后也尝试了updateview,但是我得到了NoReverseMatch错误。我尝试了很多在网上建议的方法,但它们似乎不起作用。这是我得到的NoReverseMatchError错误的屏幕截图
下面是我的档案
urls.py
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
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
{% 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
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
{% 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 %}发布于 2018-06-30 13:27:14
看上去你的羽绒服没有被传递到视图中。尝试将模板中的self.id更改为project.id
{% 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。尝试添加一些东西,让它们与众不同
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'),否则它就找不到更新视图了。
https://stackoverflow.com/questions/51115319
复制相似问题