如何在Django中使用重定向函数发送字典数据

28 浏览
0 Comments

如何在Django中使用重定向函数发送字典数据

我试图通过重定向方法发送一个字典,但在重定向的模板中无法获取它。我尝试像在render函数中传递字典一样传递字典,但我不认为我是以正确的方式进行操作。我还尝试了HttpResponseRedirect,但也不起作用。我遇到了一个奇怪的错误

NoReverseMatch at /

views.py

def index(request):
    if request.method == "POST":
        url  = request.POST.get('url', '')
        r = requests.get(url)
        soup = BeautifulSoup(r.content, features="lxml")
        p_name = soup.find_all("h2",attrs={"class": "a-size-mini"})
        p_price = soup.find_all("span",attrs={"class": "a-price-whole"})
        p_image = soup.findAll('img', {'class':'s-image','src':re.compile('.jpg')})
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename="product_file.csv"'
        for name,price,image in zip(p_name,p_price,p_image):
            writer = csv.writer(response)
            row = writer.writerow([image['src'],name.text, price.text,])
            name_data  = [data.text for data in p_name]
            price_data = [data.text for data in p_price]
            image_data = [data['src'] for data in p_image]
            dec = {'name':name_data, 'price':price_data, 'image':image_data, 'url':url}
        return redirect('data', dec)
    return render(request, 'index.html')

urls.py

from django.urls import path, include
from . import views
urlpatterns = [
    path('', views.index, name="index"),
    path('upload',views.upload,name='upload'),
    path('data',views.data,name='data')
]

0