Python Django-如何在url中放置列表
我正在视图中创建一个列表,以显示加载的csv文件中的元素(Python Django-如何在url中放置列表,python,django,csv,django-1.9,Python,Django,Csv,Django 1.9,我正在视图中创建一个列表,以显示加载的csv文件中的元素(def showcv(request))。我想得到这个列表并把它放到url重定向中(第一个链接“a”),但我不知道怎么做 def showCsv(request): if request.POST: object_pk = request.POST.get('pk') csvname = request.FILES['f'] path = default_storage.save('med
def showcv(request)
)。我想得到这个列表并把它放到url重定向中(第一个链接“a”),但我不知道怎么做
def showCsv(request):
if request.POST:
object_pk = request.POST.get('pk')
csvname = request.FILES['f']
path = default_storage.save('media/csv', ContentFile(csvname.read()))
tmp_file = os.path.join('', path)
csvname = open(tmp_file, 'rb')
reader = csv.reader(codecs.iterdecode(csvname, 'utf-8'), delimiter=";")
list_test = []
for row in reader:
list_test.append((row))
return render(request, 'website/show_csv.html',
{ 'app_version':APP_VERSION, 'object_pk':object_pk, 'list': list_test})
show_csv.html
{% block content %}
<div class="menu">
<ul class="blockchoixcontinuer">
<a href="{% url 'website:impression_publipostage' object_pk list %}"> Continuer </a>
</ul>
<ul class="blockchoixretour">
<a href="{% url 'website:addcsv' object_pk %}"> Retour </a>
</ul>
</div>
<div class="container" id="container">
<div class="row">
<table class="table table-striped col-md-12">
<tbody>
{% for row in list %}
<tr>
<td>{{ row.0 }}</td>
<td>{{ row.1 }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
{%block content%}
{列表%中的行的%1}
{{row.0}}
{{row.1}}
{%endfor%}
{%endblock%}
如果我理解这一点,您正在一个视图中读取列表(从上传的文件中获取),然后希望将整个列表传递给另一个视图
可以肯定的是,您将无法将整个列表作为url参数传递—若文件大于允许的url长度—它将失败。其他问题是性能问题,甚至是清晰度问题
在视图之间传递数据有多种解决方案,但您需要在服务器端以某种方式存储和保留数据,然后在视图之间传递一些标识符
最简单的方法是使用数据库,更复杂-将数据存储到文件中(您已经有了这个文件),然后在会话中存储文件的路径或通过参数将其传递到url,您可以将数据存储在缓存中(如果不是那么大)等等。对不起,我找到了解决问题的方法 要做到这一点,我在其他文件中写下我的csv的url,然后在我的其他视图中打开这个文件,这并不是最好的主意,但它是有效的。 之后,您只需处理(添加元素、删除元素、在上下文中显示等)。谢谢你的帮助
ShowCsvView
path = default_storage.save('media/csv', ContentFile(csvname.read()))
tmp_file = os.path.join('', path)
csvname = open(tmp_file, 'rb')
reader = csv.reader(codecs.iterdecode(csvname, 'utf-8'), delimiter=";")
list_test = []
for row in reader:
list_test.append((row))
f = io.open("media/list_file", "w")
f.write(tmp_file)
f.close()
CreatePdfView
list_element_csv = []
with io.open("media/list_file", "r") as infile:
str_path = infile.read()
csvname = open(str_path, 'rb')
reader = csv.reader(codecs.iterdecode(csvname, 'utf-8'), delimiter=";")
for row in reader:
list_element_csv.append(row)
你不能将CSV存储在模型中吗?如果是,您可以编写一个
视图
,其中显示此列表和一个引用的主键
。我不能使用模型,因为我没有存储我的csv元素,因为当用户登录我的网站时,csv只是“临时加载”在媒体上。您显然希望如何处理此列表和URL?例如,它们是我的csv上的元素:[[NumeroProduit]、[NumeroSerie]、[SUPP-MC67-01110]、[20160428]、[PACE-MK25-03265]、[10035701'],我想在另一个视图中保存或传输此列表,以使用元素编写模板并打印它们。我选择url是因为我可以获取列表(如pk的get_object()),好的,pk
指的是什么?