Python django.url.exceptions.NoReverseMatch
我是Django的新手。在本规范中,“pembekal”指供应商。当我点击“New stok”按钮时,它将创建新书或其他新项目,但它给出如下错误:Python django.url.exceptions.NoReverseMatch,python,django,Python,Django,我是Django的新手。在本规范中,“pembekal”指供应商。当我点击“New stok”按钮时,它将创建新书或其他新项目,但它给出如下错误: django.urls.exceptions.NoReverseMatch: Reverse for 'stok_create' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['books/(?P<pk>[0-9]+)/create/$'] vie
django.urls.exceptions.NoReverseMatch: Reverse for 'stok_create' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['books/(?P<pk>[0-9]+)/create/$']
views.py
from django.shortcuts import render, get_object_or_404
from django.http import JsonResponse
from django.template.loader import render_to_string
from django.urls import reverse
from .models import Pembekal
from .forms import PembekalForm, StokForm
def pembekal_list(request):
pembekals = Pembekal.objects.all()
return render(request, 'books/book_list.html', {'pembekals': pembekals})
def stok_list(request, pk):
pembekal = Pembekal.objects.get(pk=pk)
return render(request, 'books/stok_list.html', {'pembekal':pembekal})
def save_pembekal_form(request, form, template_name):
data = dict()
if request.method == 'POST':
if form.is_valid():
form.save()
data['form_is_valid'] = True
pembekals = Pembekal.objects.all()
data['html_book_list'] = render_to_string('books/includes/partial_book_list.html', {'pembekals': pembekals})
else:
data['form_is_valid'] = False
context = {'form': form}
data['html_form'] = render_to_string(template_name, context, request=request)
return JsonResponse(data)
def pembekal_create(request):
if request.method == 'POST':
form = PembekalForm(request.POST)
else:
form = PembekalForm()
return save_pembekal_form(request, form, 'books/includes/partial_book_create.html')
def save_stok_form(request, form, template_name):
data = dict()
if request.method == 'POST':
if form.is_valid():
form.save()
data['form_is_valid'] = True
stoks = Stok.objects.all()
data['html_book_list'] = render_to_string('books/includes/partial_stok_list.html', {'stoks': stoks})
else:
data['form_is_valid'] = False
context = {'form': form}
data['html_form'] = render_to_string(template_name, context, request=request)
return JsonResponse(data)
def stok_create(request, pk):
pembekal = get_object_or_404(Pembekal, pk=pk)
if request.method == 'POST':
form = StokForm(request.POST, instance=pembekal)
else:
form = StokForm(instance=pembekal)
return save_stok_form(request, form, 'books/includes/partial_stok_create.html')
def pembekal_update(request, pk):
pembekal = get_object_or_404(Pembekal, pk=pk)
if request.method == 'POST':
form = PembekalForm(request.POST, instance=pembekal)
else:
form = PembekalForm(instance=pembekal)
return save_pembekal_form(request, form, 'books/includes/partial_book_update.html')
def pembekal_delete(request, pk):
pembekal = get_object_or_404(Pembekal, pk=pk)
data = dict()
if request.method == 'POST':
pembekal.delete()
data['form_is_valid'] = True
pembekals = Pembekal.objects.all()
data['html_book_list'] = render_to_string('books/includes/partial_book_list.html',
{'pembekals': pembekals})
else:
context = {'pembekal': pembekal}
data['html_form'] = render_to_string('books/includes/partial_book_delete.html',
context, request=request)
return JsonResponse(data)
forms.py
from django import forms
from .models import Pembekal, Stok
class PembekalForm(forms.ModelForm):
class Meta:
model = Pembekal
fields = ('pembekal', 'alamat', 'telefon',)
class StokForm(forms.ModelForm):
class Meta:
model = Stok
fields = ('stok',)
url.py
urlpatterns = [
path('', TemplateView.as_view(template_name='home.html'), name='home'),
path('books/', views.pembekal_list, name='book_list'),
path('books/create/', views.pembekal_create, name='book_create'),
path('books/<int:pk>/', views.stok_list, name='stok_list'),
path('books/<int:pk>/update/', views.pembekal_update, name='book_update'),
path('books/<int:pk>/delete/', views.pembekal_delete, name='book_delete'),
path('books/<int:pk>/create/', views.stok_create, name='stok_create'),
path('admin/', admin.site.urls),
]
urlpatterns=[
路径(“”,TemplateView.as_视图(template_name='home.html'),name='home'),
路径('books/',views.pembekal_list,name='book_list'),
路径('books/create/',views.pembekal_create,name='book_create'),
路径('books/',views.stok_list,name='stok_list'),
路径('books//update/',views.pembekal_update,name='book_update'),
路径('books//delete/',views.pembekal_delete,name='book_delete'),
路径('books//create/',views.stok_create,name='stok_create'),
路径('admin/',admin.site.url),
]
stok_list.html
{% extends 'base.html' %}
{% load static %}
{% block javascript %}
<script src="{% static 'books/js/books.js' %}"></script>
{% endblock %}
{% block content %}
<div class="container">
<ol class="breadcrumb my-4">
<li class="breadcrumb-item"><a href="{% url 'book_list' %}">Pembekals</a></li>
<li class="breadcrumb-item active">{{ pembekal.pembekal }}</li>
</ol>
</div>
<p>
<button type="button" class="btn btn-primary js-create-book" data-url="{% url 'stok_create' pk=pembekal.pk %}">
<span class="glyphicon glyphicon-plus"></span>
New stok
</button>
</p>
<table class="table" id="book-table">
<thead>
<tr>
<th>#</th>
<th>Stok</th>
<th></th>
</tr>
</thead>
<tbody>
{% include 'books/includes/partial_stok_list.html' %}
</tbody>
</table>
<div class="modal fade" id="modal-book">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
{% endblock %}
{% for stok in pembekal.stoks.all %}
<tr>
<td>{{ stok.id }}</td>
<td><a href="#">{{ stok.stok }}</a></td>
<td style="width: 150px">
<button type="button"
class="btn btn-warning btn-sm js-update-book"
data-url="#">
<span class="glyphicon glyphicon-pencil"></span> Edit
</button>
<button type="button"
class="btn btn-danger btn-sm js-delete-book"
data-url="#">
<span class="glyphicon glyphicon-trash"></span> Delete
</button>
</td>
</tr>
{% empty %}
<tr>
<td colspan="8" class="text-center bg-warning">No book</td>
</tr>
{% endfor %}
{%extends'base.html%}
{%load static%}
{%block javascript%}
{%endblock%}
{%block content%}
{{pembekal.pembekal}
新斯托克
#
斯托克
{%include'books/includes/partial\u stok\u list.html%}
{%endblock%}
partial_stok_create.html
<form method="post" action="{% url 'stok_create' pk=pembekal.pk %}" class="js-book-create-form">
{% csrf_token %}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Create a new stok</h4>
</div>
<div class="modal-body">
{% include 'books/includes/partial_stok_form.html' %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Create stok</button>
</div>
</form>
{%csrf_令牌%}
&时代;
创建一个新stok
{%include'books/includes/partial_stok_form.html%}
接近
创造斯托克
partial_stok_form.html
{% load widget_tweaks %}
{% for field in form %}
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
{%load widget\u tweaks%}
{%形式的字段为%}
{{field.label}
{%render_field class=“form control”%}
{%字段中有错误。错误%}
{{error}
{%endfor%}
{%endfor%}
partial_stok_list.html
{% extends 'base.html' %}
{% load static %}
{% block javascript %}
<script src="{% static 'books/js/books.js' %}"></script>
{% endblock %}
{% block content %}
<div class="container">
<ol class="breadcrumb my-4">
<li class="breadcrumb-item"><a href="{% url 'book_list' %}">Pembekals</a></li>
<li class="breadcrumb-item active">{{ pembekal.pembekal }}</li>
</ol>
</div>
<p>
<button type="button" class="btn btn-primary js-create-book" data-url="{% url 'stok_create' pk=pembekal.pk %}">
<span class="glyphicon glyphicon-plus"></span>
New stok
</button>
</p>
<table class="table" id="book-table">
<thead>
<tr>
<th>#</th>
<th>Stok</th>
<th></th>
</tr>
</thead>
<tbody>
{% include 'books/includes/partial_stok_list.html' %}
</tbody>
</table>
<div class="modal fade" id="modal-book">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
{% endblock %}
{% for stok in pembekal.stoks.all %}
<tr>
<td>{{ stok.id }}</td>
<td><a href="#">{{ stok.stok }}</a></td>
<td style="width: 150px">
<button type="button"
class="btn btn-warning btn-sm js-update-book"
data-url="#">
<span class="glyphicon glyphicon-pencil"></span> Edit
</button>
<button type="button"
class="btn btn-danger btn-sm js-delete-book"
data-url="#">
<span class="glyphicon glyphicon-trash"></span> Delete
</button>
</td>
</tr>
{% empty %}
<tr>
<td colspan="8" class="text-center bg-warning">No book</td>
</tr>
{% endfor %}
{%用于pembekal.stoks.all%中的stok}
{{stok.id}
编辑
删除
{%empty%}
没有书
{%endfor%}
这就是我目前使用的所有文件。非常感谢您的帮助。我正在使用Ajax渲染到CRUD应用程序。由于出现上述消息,模态窗体不会弹出。多个文件中可能有错误。请纠正我。谢谢为呈现
stok_list.html
的视图显示代码。似乎没有将pembekal
值传递到模板上下文中。模板的其余部分和呈现它的视图在哪里?我们需要知道此时的pembekal
是什么,知道为什么它有一个空的pk
。显示呈现stok_list.html
的视图的代码。似乎没有将pembekal
值传递到模板上下文中。模板的其余部分和呈现它的视图在哪里?我们需要知道pembekal在这一点上是什么,知道为什么它有一个空的pk
。