/プロバイダ/ 121 /更新/ の引数が '(None、)'ではないため、 'provider_update' 1つのパターンが試されました:['providers /(?P \ d +)/ update /']NoReverseMatchでデータソースを渡して、アクションメソッドを作成する際に問題が発生しました。
URLが特定されているパラメータを見つけることができないため、なぜNoReverseMatchエラーがスローされるのか分かります。しかし、なぜ私のパラメータが正しいビューに渡されていないのか分かりません。パラメータIDまたはPKを保持するvarを渡すと、何らかの理由でNoneと認識されます。私は同様の質問を見てきましたが、データをフォームアクションに渡す際に問題はありません。どんな助けもありがとう!おかげ
partial_provider_update.html
<form method="post" action="{% url 'provider_update' form.instance.id %}" class="js-provider-update-form">
{% csrf_token %}
<div class="modal-header">
<h4 class="modal-title">Update Provider</h4>
</div>
<div class="modal-body">
{% include 'providers/includes/partial_provider_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">Update provider</button>
</div>
</form>
partial_provider_list.html
{% for provider in object_list %}
<tr>
<td>{{ provider.id }}</td>
<td>{{ provider.name }}</td>
<td>{{ provider.organization }}</td>
<td>{{ provider.emr }}</td>
<td>{{ provider.date|date:"Y-m-d" }}</td>
<td style="width: 100px; vertical-align: center; padding-top: 9px">
<button type="button"
style="height: 25px; font-size: 16px;width: 50px; padding: 0px"
class="btn btn-warning btn-sm js-update-provider"
data-url="{% url 'provider_update' provider.id %}">
Edit
</button>
</td>
{% empty %}
<tr>
<td colspan="5" class="text-center bg-warning">No Providers</td>
</tr>
{% endfor %}
urls.py
from django.conf.urls import url, include
from django.views.generic import ListView, DetailView, TemplateView
from providers.models import Provider
from providers import views
urlpatterns = [
url(r'^$', ListView.as_view(queryset=Provider.objects.all().order_by("id"), template_name='providers/home.html')),
url(r'^create/', views.provider_create, name='provider_create'),
url(r'^(?P<pk>\d+)/update/', views.provider_update, name='provider_update'),
]
views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render, get_object_or_404
from django.template.loader import render_to_string
from django.http import JsonResponse
from providers.models import Provider
from .forms import ProviderForm
def index(request):
return render(request, 'providers/home.html')
def save_provider_form(request, form, template_name):
data = dict()
if request.method == 'POST':
if form.is_valid():
form.save()
data['form_is_valid'] = True
object_list = Provider.objects.all()
data['html_provider_list'] = render_to_string('providers/includes/partial_provider_list.html', { 'object_list' : object_list })
else:
data['form_is_valid'] = False
else:
form = ProviderForm()
context = {'form': form}
data['html_form'] = render_to_string(template_name, context, request=request)
return JsonResponse(data)
def provider_create(request):
if request.method == 'POST':
form = ProviderForm(request.POST)
else:
form = ProviderForm()
return save_provider_form(request, form, 'providers/includes/partial_provider_create.html')
def provider_update(request, pk):
provider = get_object_or_404(Provider, pk=pk)
if request.method == 'POST':
form = ProviderForm(request.POST, instance=provider)
else:
form = ProviderForm(instance=provider)
return save_provider_form(request, form, 'providers/includes/partial_provider_update.html')
oh wow。それは私のことがとてもうんざりです。私はこれを理解しようと3時間以上かけて過ごしました。本当にありがとう –