我刚到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/$']
你知道吗型号.py你知道吗
from django.db import models
from django.contrib.auth.models import User
class Pembekal(models.Model):
pembekal = models.CharField(max_length=50, unique=True)
alamat = models.CharField(max_length=50)
telefon = models.CharField(max_length=20)
def __str__ (self):
return self.pembekal
class Stok(models.Model):
stok = models.CharField(max_length=50, unique=True)
pembekal = models.ForeignKey(Pembekal, on_delete=models.CASCADE, related_name='stoks')
def __str__ (self):
return self.jenis_stok
你知道吗视图.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)
你知道吗表单.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',)
你知道吗网址.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),
]
斯托克_列表.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 %}
部分地_创建.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>
部分地_表单.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 %}
部分地_列表.html你知道吗
{% 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 %}
这就是我目前使用的所有文件。非常感谢您的帮助。我正在使用Ajax渲染CRUD应用程序。由于出现上述消息,模态窗体未弹出。多个文件中可能有错误。请纠正我。谢谢
目前没有回答
相关问题 更多 >
编程相关推荐