簡體   English   中英

Django 1.10 中的反向錯誤

[英]Reverse error in Django 1.10

我是 Django 的新手,正在慢慢學習它的工作原理。 我剛剛升級到 1.10,我的應用程序的一部分停止工作。 我知道這與對 Reverse 所做的更改有關。 我一直在閱讀,但找不到我做錯了什么。 除了幾個例外,幾乎一切都正常工作。 行為如下:

1)在我的應用程序上加載預訂/創建,它完美運行我可以創建我的預訂

2)當我點擊創建時,預訂實際上創建並保存到數據庫中,但瀏覽器發送到錯誤的地址。 它被發送到預訂/創建而不是預訂/預訂編號(例如,它顯示其詳細信息的預訂/2)並顯示反向錯誤(包含在這篇文章中)

3) 例如,如果我測試 reserved/2,它表明它是實際創建的。

4) 此外,如果直接進入預訂/它應該顯示所有已創建的列表,但也顯示反向錯誤。

我真的很感激任何幫助理解我做錯了什么。

模型.py

class Reservation(models.Model):
    res_number = models.AutoField(primary_key=True)
    date = models.DateField(default=datetime.date.today())
    status = models.CharField(max_length=10,default="Created")
    reservation_type = models.CharField(max_length=11,choices=shced_type_choices, default="rental")
    aircraft = models.ForeignKey('aircraft.Aircraft')
    renter = models.CharField(max_length=30,blank=False,null=False)
    instructor = models.CharField(max_length=30,blank=True,null=False)

    def get_absolute_url(self):
        return reverse("reservations:detail", kwargs={"res_number": self.res_number})

主要網址.py

url(r'^reservations/', include('dispatch.urls', namespace='reservations')),

Dispatch.urls

from django.conf.urls import include, url
from django.contrib import admin
from .views import (
    reservations_list,
    reservations_detail,
    reservations_edit,
    reservations_dispatch,
    reservations_close,
    reservations_cancel,
    reservations_create,
    reservations_close,
)


urlpatterns = [

    url(r'^$', reservations_list),
    url(r'^(?P<res_number>\d+)/$', reservations_detail),
    url(r'^(?P<res_number>\d+)/edit/$', reservations_edit),
    url(r'^(?P<res_number>\d+)/dispatch/$', reservations_dispatch),
    url(r'^(?P<res_number>\d+)/close/$', reservations_close),
    url(r'^(?P<res_number>\d+)/cancel/$', reservations_cancel), 
    url(r'^create/$', reservations_create),
    url(r'^close/$', reservations_close),

]

視圖.py

from django.contrib import messages
from django import forms
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from .forms import ReservationForm, CloseReservationForm
from .models import Reservation

def reservations_list(request):
    queryset = Reservation.objects.all()
    context = {
        "object_list": queryset,
        "title": "List of Reservations:"

    }
    return render(request, "dispatch/list.html", context)

def reservations_detail(request, res_number=None):
    instance = get_object_or_404(Reservation, res_number=res_number)
    context = {
        "title": instance.renter,
        "instance": instance,

    }
    return render(request, "dispatch/details.html", context)


def reservations_create(request):
    form = ReservationForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        print(instance.aircraft.hobbs)
        instance.save()
        messages.success(request, "Reservation Created")
        return HttpResponseRedirect(instance.get_absolute_url())

    context = {
    "form": form,
    }
    return render(request, "dispatch/create.html", context)

詳情.html

{% extends "dispatch/base.html" %}
{% block head_title %}{{ block.super }} | {{instance.res_number}}{% endblock head_title %}
{% block content %}

<h1>Reservation for {{title}} on {{instance.date}}</h1>


Reservation Number: {{instance.res_number}}</br>
Date: {{instance.date}}</br>
Status: {{instance.status}}</br>
Reservation Type: {{instance.reservation_type}}</br>
Aircraft: {{instance.aircraft}}</br>
Renter's Name: {{instance.renter}}</br>
Instructor's Name: {{instance.instructor}}</br>
Expected Flight Hours: {{instance.expected_hours}} Hrs</br>
Actual Flown Hours: {{instance.flown_hours}} Hrs</br>
Reservation Created on: {{instance.created}}</br>
Last Updated on: {{instance.updated}}</br>

{% endblock content %}

創建.html

{% extends "dispatch/base.html" %}

{% block head_title %}{{ block.super }} | Create{% endblock head_title %}

{% block content %}

<h1>Create Reservation</h1>

<form method='POST' action=''>{% csrf_token %}

{{form.as_p}}
<input type="submit" name="Create Reservation">

</form>

{% endblock content %}

反向錯誤截圖

您的問題是您的路線沒有名稱。 因此,當您使用reverse('some_name') ,您必須定義這樣的名稱。 在您的情況下,名稱是detail ,因此您想做這樣的事情(請參閱參數name

urlpatterns = [
    url(r'^(?P<res_number>\d+)/$', reservations_detail, name='detail'),
]

另外請不要插入回溯作為屏幕截圖。 您看到“切換到復制粘貼視圖”的鏈接了嗎? 嗯,下次用這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM