簡體   English   中英

如何重定向到 django 中的動態 url

[英]How to redirect to a dynamic url in django

我正在做一個 Django 項目。 在項目中我有一個動態網址如下

app_name = 'test'

urlpatterns = [
    path('root', views.root, name='root'),
    path('output/<str:instance>', views.output_page, name='output_page'),
]

應用程序中有兩個頁面。 root頁面中存在一個表單,提交時應重定向到output_page 但是因為output_page是一個動態 url,所以我無法重定向。

這是我的意見文件

def root(request):
    if request.method == 'POST':

        name = request.POST.get('name')
        job = request.POST.get('job')

        return redirect("test:output_page")

    return render(request, 'test/root.html')

def output_page(request, instance):

    record = Object.objects.all(Instance_id=instance)

    return render(request, 'test/output_page.html', {'record': record})

這是模型

class Object(models.Model):
    Name = models.CharField(max_length=200, null=True, blank=True)
    Job = models.CharField(max_length=200, default="")
    Instance_id = models.CharField(max_length=200)

當重定向發生時,我希望 url 如下

http://127.0.0.1:8000/output/test-001

其中test-001是模型中的 instance_id。

output_page 應該使用 instance_id test-001過濾模型中的所有數據

你可以這樣做

return redirect(reverse("test:ouput_page",kwargs={'instance':str(instance_id)}))

解決方案

您的問題的直接解決方案如下:

from django.urls import reverse
from django.shortcuts import get_object_or_404
...
instance = get_object_or_404(Object, name=name, job=job)
redirect(reverse('test:output_page', args=instance))

但是,值得研究基於類的視圖。 為此,我建議使用 django 內置的RedirectView

參考

Django 逆向: https : //docs.djangoproject.com/en/3.1/ref/urlresolvers/

Django 重定向視圖: https : //docs.djangoproject.com/en/3.1/ref/class-based-views/base/#redirectview

instance_model = "xyz"
return redirect('output_page', instance=str(instance_model))
(or)
return redirect('test:output_page', instance=str(instance_model))

暫無
暫無

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

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