如何在 Django 中使用多个应用程序渲染 URL 模式

问题描述 投票:0回答:1

我正在尝试使用 Django 构建一个预订系统。我有多个应用程序,渲染 url 模式很难理解,而且当您有多个应用程序时,我发现文档几乎没有帮助。

这是我的核心应用程序网址:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('review.urls'), name='review_urls'),
    path('accounts/', include('allauth.urls')),
    path('bookings/', include('booking.urls'), name='booking_urls'),

]

预订应用程序网址:

urlpatterns = [
    path('booking', views.customer_booking, name='booking'),
    path('display_booking', views.display_booking, name='display_booking'),
    path('edit_booking/<booking_id>',
         views.edit_booking, name='edit_booking'),

]

我正在尝试渲染我的 edit_booking 视图:

def edit_booking(request, booking_id):
    booking = get_object_or_404(Booking, id=booking_id)
    if request.method == "POST":
        form = BookingForm(request.POST, instance=booking)
        if form.is_valid():
            form.save()
            return redirect('display_booking')
    form = BookingForm(instance=booking)
    context = {
        'form': form
    }
    return render(request, 'edit_booking.html', context)

它被调用的地方:

<a href="/edit_booking/{{ booking.id }}"> <button>Edit</button></a>

我尝试将 bookings/ 添加到我的编辑按钮中,但这正在请求一个包含 bookings/bookings/edit_booking/7 的页面。没有它,它只是请求端点 edit_booking/7

django django-views django-templates django-urls
1个回答
0
投票

您需要使用

url
模板标签

<a href="{% url 'edit_booking' booking.id %}"> <button>Edit</button></a>
© www.soinside.com 2019 - 2024. All rights reserved.