Django: печать последней даты загрузки и количества новых записей с момента последней загрузки

#python #django

Вопрос:

В своем приложении я создал рабочую функцию для загрузки всей информации о пользователях в мою базу данных. На моей html-странице я хотел бы также добавить дату последней загрузки csv-файла и количество новых профилей, добавленных с момента последней загрузки. Я думал использовать информацию, хранящуюся в файле имени, чтобы сделать это, но я получаю это имя ошибки 'file_name' is not defined

учетная запись.просмотры

 @login_required def download_csv(request):  response = HttpResponse(content_type='text/csv')  profile_total = Information.objects.all().count()  profile_csv_date_donwload = str(datetime.today().strftime("%d-%m-%Y"))  file_naname =   profile_csv_date_donwload   str(profile_total)  '.csv'  response['Content-Disposition'] = 'attachment; filename='   file_naname     writer = csv.writer(response, delimiter=';')   info = Information.objects.all()   writer.writerow(['first_name', 'last_name', 'gender', 'birthdate'])   for i in info:  writer.writerow([i.first_name, i.last_name, i.gender, i.birthdate])   return response   

не загружайте.просмотров

 from account.views import download_csv def download_page(request):  profile_total = Information.objects.all().count()  latest_d_csv = file_name[0:10]   latest_n_csv = file_name[11:]   new_profile = profile_total - int(latest_n_csv)  context = {  'profile_total': profile_total,  'latest_d_csv': latest_d_csv  'latest_n_csv': latest_n_csv  'new_profile': new_profile   }  return render(request, 'page/download.html', context)   

HTML

 lt;div class="col-md-8"gt;   lt;div class="row gutters-sm"gt;   lt;div class="col-sm-6 mb-3"gt;  lt;div class="card h-100"gt;  lt;div class="card-body"gt;  lt;h6 class="d-flex align-items-center mb-3"gt;Profile CSVlt;/h6gt;   lt;br/gt;   lt;smallgt;Profile in Database: {{ profile_total }}lt;/smallgt;  lt;br/gt;   lt;smallgt;Latest Download: {{ latest_d_csv}}lt;/smallgt;  lt;br/gt;   lt;smallgt;New Profile: {{ new_profile }}lt;/smallgt;   lt;/divgt;  lt;/divgt;  lt;/divgt;   

Ответ №1:

Имя файла в download_page не определено, поэтому либо вызвать эту функцию из download_cv, где определено имя файла, и передать имя файла в качестве аргумента, либо передать его через перенаправление download_cv на download_page..

Проверьте, нет ли ошибки опечатки в строке ниже( ее имя файла вместо имени файла) имя файла = profile_csv_date_donwload str(profile_total) ‘.csv

Как передать аргумент в функцию просмотра:

1-передача аргумента от функции к функции (обе функции принимают запрос в качестве аргумента):

в url.py:

 urlpatterns = [ path('lowad_page/lt;str:file_namegt;', view.downlowad_page, name='downlowad_page'), ]  

в view.py

 def download_csv(request):  .  .  . return redirect('downlowad_page', file_name)  def download_page(request, file_name):  .  .  .  return response(request, ......)  

2-В html вы можете передать аргумент с помощью тега url: "{% url 'downlowad_page' file_name %}" убедитесь, что имя файла передано в html (вы можете передать его через контекст).

Комментарии:

1. Спасибо! Не могли бы вы помочь мне с каким-нибудь примером того, как достичь того, о чем вы говорите? Еще раз спасибо

2. Я добавил 2 примера, если вы сочтете мой ответ полезным, пожалуйста, озвучьте мой ответ, заранее спасибо