django视图未重定向

django视图未重定向,django,django-models,django-forms,django-views,django-templates,Django,Django Models,Django Forms,Django Views,Django Templates,我有两个功能product\u page\u view和buy\u now\u view 问题是,在成功发布订单后buy_now_视图正在返回到product_page_视图而不重定向,如果我这样做: def product_page_view(request, prod_slug, color=None, size=None): ... ... order_form = Buy_now_form() if request.method == "POST

我有两个功能
product\u page\u view
buy\u now\u view

问题是,在成功发布
订单后
buy_now_视图
正在返回到
product_page_视图
而不重定向,如果我这样做:

def product_page_view(request, prod_slug, color=None, size=None):
    ...
    ...
    order_form = Buy_now_form()
    if request.method == "POST":
        order_form = Buy_now_form(request.POST)

        if order_form.is_valid():
            buy_now_view(request, prod_slug, color, size)
    ...
    ...
 

def buy_now_view(request, prod_slug, color, size):
    ...
    ...
    return redirect(reverse("product-shipping", args=(order_id,)))


def shipping_view(request, order_id):
    ...
如果我这样做:

def buy_now_view(request, prod_slug, color, size):
    ...
    ...
    return order_id


def product_page_view(request, prod_slug, color=None, size=None):
    ...
    ...
    order_form = Buy_now_form()
    if request.method == "POST":
        order_form = Buy_now_form(request.POST)

        if order_form.is_valid():
            order_id = buy_now_view(request, prod_slug, color, size)
            return redirect(reverse("product-shipping", args=(order_id,)))
    ...
    ...


def shipping_view(request, order_id):
    ...
它给了我不想要的结果

我的网址是:

# INDIVIDUAL PRODUCT VIEW PAGE COLOR & SIZE
    path('products/<slug:prod_slug>/<str:color>/<str:size>/', product_page_view, name="product-page-view-color-size"),

# INDIVIDUAL PRODUCT VIEW PAGE SIZE
    path('products/<slug:prod_slug>/<str:size>/', product_page_view, name="product-page-view-size"),

# INDIVIDUAL PRODUCT VIEW PAGE COLOR
    path('products/<slug:prod_slug>/<str:color>/', product_page_view, name="product-page-view-color"),

# INDIVIDUAL PRODUCT VIEW PAGE
    path('products/<slug:prod_slug>/', product_page_view, name="product-page-view"),

# SHIPPING VIEW
    path('products/<int:order_id>/shipping/', shipping_view, name="product-shipping"),

这里到底发生了什么?

实际上您忘记了从产品页面视图返回重定向请求。
buy\u now\u视图
已将重定向请求返回到
product\u页面视图
。现在要重定向,
product\u page\u视图
也必须返回该值

def product_page_view(request, prod_slug, color=None, size=None):
    ...
    ...
    order_form = Buy_now_form()
    if request.method == "POST":
        order_form = Buy_now_form(request.POST)

        if order_form.is_valid():
            return buy_now_view(request, prod_slug, color, size)

实际上,您忘记了从产品页面视图返回重定向请求。
buy\u now\u视图
已将重定向请求返回到
product\u页面视图
。现在要重定向,
product\u page\u视图
也必须返回该值

def product_page_view(request, prod_slug, color=None, size=None):
    ...
    ...
    order_form = Buy_now_form()
    if request.method == "POST":
        order_form = Buy_now_form(request.POST)

        if order_form.is_valid():
            return buy_now_view(request, prod_slug, color, size)

也可以添加URL.py。并解释你的页面在操作后重定向到哪里。谢谢你的时间@Pax。我添加了URL,
product\u page\u视图
将被重定向到
shipping\u视图
。我在上面提到过两种情况,它们都有不同的重定向问题。您是否在URL.py中编写了
app\u name
变量?我实际上不知道如何做。请分享一些细节好吗?谢谢。实际上这是在django的一个会议。如果您没有使用
app\u name
,那么这可能不是您问题的解决方案。假设您有两个应用程序,并且都将路径设置为
name=“home”
。如果您尝试重定向到
home
URLConf,则会弄不清楚该转到哪个家。因此,如果我们定义了
app\u name=“App1”
。您可以告诉django要重定向哪个页面,方法是说
redirect(“App1:home”)
。如果您已定义应用程序名称。有必要保留app_name:name以重定向。您也可以添加URL.py。并解释你的页面在操作后重定向到哪里。谢谢你的时间@Pax。我添加了URL,
product\u page\u视图
将被重定向到
shipping\u视图
。我在上面提到过两种情况,它们都有不同的重定向问题。您是否在URL.py中编写了
app\u name
变量?我实际上不知道如何做。请分享一些细节好吗?谢谢。实际上这是在django的一个会议。如果您没有使用
app\u name
,那么这可能不是您问题的解决方案。假设您有两个应用程序,并且都将路径设置为
name=“home”
。如果您尝试重定向到
home
URLConf,则会弄不清楚该转到哪个家。因此,如果我们定义了
app\u name=“App1”
。您可以告诉django要重定向哪个页面,方法是说
redirect(“App1:home”)
。如果您已定义应用程序名称。有必要保留app\u name:name以重定向。我尝试了
返回buy\u now\u视图(请求、产品编号、颜色、大小)
,但没有成功。我尝试了
返回buy\u now\u视图(请求、产品编号、颜色、大小)
,但没有成功。