2017-06-13 5 views
0

Ich habe viele verwandte Fragen durchlaufen, aber ich bin nicht in der Lage, dieses Problem zu lösen, damit ich es schließlich posten werde, habe ich eine App "Kunden", die eine Liste von Kunden halten wird Derzeit gibt es zwei Benutzerebenen 1) Kunde - Wenn ich mich als Kunde einlogge, würde ich nur meine Daten sehen und meine Informationen ändern und ändern können. 2) Advisor - Wenn ich mich als Advisor anmelde, würde ich das tun Sehen Sie sich eine Kundenliste an und ich könnte Änderungen an jedem Kunden vornehmen. Um dies zu erreichen, habe ich eine Schaltfläche "Bearbeiten", wenn Sie darauf klicken, umgeleitet zu einem "Formular" mit den bestimmten Feldern bereits ausgefüllt, kann ich bearbeiten und speichern. Das Problem tritt auf, wenn ich auf "Bearbeiten" klicke. Ich erhalte den Fehler "NoReverseMatch at/customer /". Aber wenn ich direkt zu dem Formular navigiere, indem ich "localhost: 8000/customer/1/edit" eintippe, könnte ich das Formular sehen.Neuling - Python Django - NoReverseMatch Error

Hier ist meine views.py

@login_required 
def customer_edit(request, cust_number): 
    # customer = get_object_or_404(Customer, pk=cust_number) 
    if request.method == "POST": 
     form = CustomerForm(request.POST) 
     # form = CustomerForm(request.CUSTOMER, instance=customer) 
     if form.is_valid(): 
      customer = form.save(commit=False) 
      customer.cust_number = request.user 
      customer.updated_date = timezone.now() 
      customer.save() 
      return redirect('customer', pk=cust_number) 
    else: 
     form = CustomerForm() 
    return render(request, 'customers/customer_edit.html', {'form': form}) 

meine hier appname/urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^customer/$', views.customer, name='customer'), 
    url(r'^home/$', views.home, name='home'), 
    url(r'^customer/(?P<cust_number>\d+)/edit/$', views.customer_edit, name='customer_edit'), 
] 

Hier ist ein Teil meiner Projektname/urls.py

url(r'', include('customers.urls', namespace="customers")) 

meine Kunden hier /forms.py

from django import forms 

from .models import Customer 


class CustomerForm(forms.ModelForm): 
    class Meta: 
     model = Customer 
     fields = ('cust_number', 'name', 'address', 'city', 'state', 'zipcode', 'email', 'cell_phone',) 

Hier ist meine customer_edit.html

{% extends 'customers/base.html' %} 

{% block content %} 
    <h1>Edit Customer</h1> 
    <form method="POST" class="customer-form">{% csrf_token %} 
     {{ form.as_p }} 
     <button type="submit" class="save btn btn-default">Save</button> 
    </form> 
{% endblock %} 

Hier ist meine customer.html

{% extends 'customers/base.html' %} 

{% block content %} 
    <!DOCTYPE html> 
    <html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Eagle Financial</title> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> 

    </head> 
    <body> 
    <style> 
     body { 
      background-color: beige; 
     } 
    </style> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-10 col-md-offset-1"> 
       <div class="panel panel-primary"> 
        <div class="panel-heading">Welcome!</div> 
        <div class="panel-body"> 
         Eagle Financial Services, your Midwest Financial Services Partner. 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <h2 style="padding-left: 15Px">Customer Information</h2> 
    </div> 
    <div> 
     <table class="table table-striped table-bordered table-hover"> 
      <thead> 
      <tr class="bg-info"> 
       <th>Customer ID</th> 
       <th>Name</th> 
       <th>Address</th> 
       <th>City</th> 
       <th>State</th> 
       <th>Zip</th> 
       <th>Primary Email</th> 
       <th>Cell Phone</th> 
       <th colspan="3">Actions</th> 
      </tr> 
      </thead> 
      <tbody> 
      {% for customer in customers %} 
       <tr> 
        <td>{{ customer.cust_number }}</td> 
        <td>{{ customer.name }}</td> 
        <td>{{ customer.address }}</td> 
        <td>{{ customer.city }}</td> 
        <td>{{ customer.state }}</td> 
        <td>{{ customer.zipcode }}</td> 
        <td>{{ customer.email }}</td> 
        <td>{{ customer.cell_phone }}</td> 
        <td><a href="{% url 'customers:customer_edit' %}" class="btn btn-primary">Update</a></td> 
       </tr> 
      {% endfor %} 
      </tbody> 
     </table> 
    </div> 
    </body> 
    </html> 
{% endblock %} 

Hier ist mein Fehler,

NoReverseMatch at /customer/ 
Reverse for 'customer_edit' with no arguments not found. 1 pattern(s) tried: ['customer/(?P<cust_number>\\d+)/edit/$'] 
Request Method: GET 
Request URL: http://127.0.0.1:8000/customer/ 
Django Version: 1.11.1 
Exception Type: NoReverseMatch 
Exception Value:  
Reverse for 'customer_edit' with no arguments not found. 1 pattern(s) tried: ['customer/(?P<cust_number>\\d+)/edit/$'] 

I-Studie und Fehler von Namensräumen versucht haben, aber nicht in der Lage um das zu lösen. Bitte führen Sie mich. Vielen Dank.

ich Python bin mit - 3.6, Django - 1.11

Antwort

0

Sie sind falsch

customer.cust_number = request.user #Why you assign user to cust_number? 
customer.updated_date = timezone.now() 
customer.save() 
return redirect('customer', pk=cust_number) 

Aktualisieren Sie Ihre Ansicht Code mit unten in Aussicht tun:

from django.core.urlresolvers import reverse 

@login_required 
def customer_edit(request, cust_number): 
    # customer = get_object_or_404(Customer, pk=cust_number) 
    if request.method == "POST": 
     form = CustomerForm(request.POST) 
     # form = CustomerForm(request.CUSTOMER, instance=customer) 
     if form.is_valid(): 
      customer = form.save(commit=False) 
      customer.cust_number = request.user.pk 
      customer.updated_date = timezone.now() 
      customer.save() 
      return reverse('customers:customer_edit', request.user.pk) 
    else: 
     form = CustomerForm() 
     return render(request, 'customers/customer_edit.html', {'form': form}) 

Verwendung in dieser html

<td><a href="{% url 'customers:customer_edit' cust_number=customer.pk %}" class="btn btn-primary">Update</a></td>