django中成功重定向的AttributeError?

django中成功重定向的AttributeError?,django,django-models,django-forms,django-views,django-templates,Django,Django Models,Django Forms,Django Views,Django Templates,从主机视图成功发送请求时重定向 def product_page_view(request, prod_slug, color=None, size=None): ... ... prod = Product.objects.filter(slug=prod_slug).first() seller = prod.seller ... .... order_form = Buy_now_form()

从主机视图成功发送请求时重定向

def product_page_view(request, prod_slug, color=None, size=None):
    ...
    ...
    prod            = Product.objects.filter(slug=prod_slug).first()
    seller          = prod.seller
    ...
    ....
    order_form = Buy_now_form()
    if request.method == "POST":
        order_form = Buy_now_form(request.POST)

        if order_form.is_valid():
            # Function for processing POST request and return order 
            order = buy_now_view(request, prod.slug, color, size)
            # Redirection 
            return redirect(reverse('product-shipping', kwargs={'order_id':order.order_id}))
    ...
主机视图和目标视图的url为

    ...
    path('products/<slug:prod_slug>/<str:color>/<str:size>/', product_page_view, name="product-page-view-color-size"),
    path('products/<int:order_id>/shipping/', shipping_view, name="product-shipping"),
    ...

产品型号:

class Product(models.Model):
    seller = models.ForeignKey(BygSeller, on_delete=models.CASCADE)

    id = models.IntegerField(primary_key=True)  
    slug = models.SlugField(max_length=250, null=True, blank=True)
    title = models.CharField(max_length=100)
    short_descrition = models.CharField(max_length=150, default=' ')
    date = models.DateField(auto_now_add=True)

    step1 = models.BooleanField(default=False)
    step2 = models.BooleanField(default=False)
    step3 = models.BooleanField(default=False)
    step4 = models.BooleanField(default=False)
    step5 = models.BooleanField(default=False)
    step6 = models.BooleanField(default=False)
    step7 = models.BooleanField(default=False)

    is_verified = models.BooleanField(default=False)
    is_published = models.BooleanField(default=False)
我的目标重定向视图是:

def shipping_view(request, order_id):
    customer = Customer.objects.filter(usr=request.user).first()
    order = Order.objects.filter(order_id=order_id).first()
    ...
(以防有人觉得有用)

问题是重定向后,回溯说
prod没有
,但是服务器
prod
属于
产品页面视图
,我没有想到回调。在callback-kwargs中传递给prod-slug的值(如回溯所述)是
order\u id
,它属于
shipping\u视图
。而且

为什么回调函数
product\u page\u view
?它不应该是
Shipping\u视图


谢谢。

实际上,您不应该将
first()
直接用于
filter()
方法。没有记录(数据),它将不返回任何记录。因此,没有对象没有任何属性seller

您可以使用这样的过滤方法

确保您在模型中具有属性卖方。并且您的型号至少包含一条记录
还可以使用count()方法返回它包含的行数


如果它有效,请让我知道。

请分享您的产品型号。请检查@DevangHingucheck您是否从此行收到正确的响应(确保它不是空对象)
Product.objects.filter(slug=prod\u slug)。first()
是的,它至少有一个要渲染的响应。另外,问题主要是重定向视图。我分享了一个追踪的快照(如果可以的话)@Ansuman我认为问题在于
prod
。正如您在堆栈跟踪中的本地变量中所看到的,它将
prod
列为
None
因此出现此错误,当您的模型包含1个或多个记录时,尝试通过更改为
product.objects.get(slug=prod\u slug)
来获取产品->
product.objects.filter(slug=prod\u slug)。首先()
将起作用问题主要在于重定向视图。我分享了一个追踪的快照(如果可以的话)。Thanks@dixitgpta但错误显示它与prod变量存在问题,该变量未获取任何类型的对象。ThnksHeyy Devang,我改进了我的问题。希望它能帮助你更好地理解我的问题。谢谢
def shipping_view(request, order_id):
    customer = Customer.objects.filter(usr=request.user).first()
    order = Order.objects.filter(order_id=order_id).first()
    ...
...
...
products = Product.objects.filter(slug = prod_slug)
if products.exists():  # True if any record available
     prod = products.first() 
     seller = prod.seller # please try print(seller) after that to check first record

...
...