#python #html #django #postgresql
#python #HTML #django #postgresql
Вопрос:
У меня есть проект Django с HTML-файлом, в котором перечислены все CSV-файлы, которые были загружены в мою базу данных Postgresql, и когда вы нажимаете на интересующий вас CSV, отображается новая страница с базовой информацией модели CSV (имя / время отправки).
Это Первая страница:
{% for csv in Data_List %}
<a href = "{{csv.id}}"><button class="btn btn-primary" style = "font-size:1.2em;" >{{csv.name}}</button></a>
<br><br>
{% endfor %}
Это вторая страница:
<p>{{request.user.username}}'s Note
<h6>{{worklog.name}}
<br>
{{worklog.date}}
<br>
{{worklog.notes|safe}}
<br>
{{worklog.mycsv|safe}}
</h6>
</p>
Однако моя цель состоит в том, чтобы при нажатии кнопки в ПРЕДСТАВЛЕНИИ python передавался (или просто извлекался) первичный ключ выбранных сообщений (или другая информация). Я хочу сделать это, чтобы представление могло запрашивать у базы данных фактический CSV и выполнять некоторую работу.
Как я могу получить view.py чтобы запросить информацию о выбранных сообщениях, такую как первичный ключ?
Спасибо и удачного кодирования
Комментарии:
1. Вам нужно будет поделиться некоторым кодом и объяснить, с чем у вас проблемы, но основная стратегия заключается в том, чтобы идентификатор базы данных передавался функции просмотра в качестве параметра в URL. Затем в вашей функции просмотра вы можете получить соответствующий объект и передать его в шаблон, где вы можете извлечь любые поля, которые вас интересуют.
2. Спасибо, что ответили, Робин! Я на 100% понимаю вторую часть вашего комментария. Где я борюсь, так это с передачей идентификатора базы данных функции просмотра в качестве параметра в URL. и примером моего URL может быть либо это: ` url (r’ ^ (?P<pk> d ) $’, DetailView.as_view(модель = Your_CSV, имя_шаблона = «accounts/csv_graph.html «)),` или это было бы примерно так ` url (r’^(?P<pk> d ) $’, просмотры. YourCSV»)), ` в этом случае представление будет обрабатывать данные. Какие другие параметры можно передать здесь? У вас есть ссылка на документацию? Еще раз спасибо!
3. похоже, вы используете Django 1 (надеюсь, 1.11) на основе этих шаблонов URL (это изменено в Django 2). В таком случае это ссылка, показывающая вам, как отправлять параметры в URL-адресах — хотя, похоже, вас это уже устраивает, основываясь на том, что вы там разместили. (Вы можете передать любое количество параметров в URL.)
4. Я ПОНЯЛ ЭТО! Спасибо, уууу! Я уже передавал свой pk в представление, используя острые скобки <> (я не понимал, что это их функция). Итак, все, что мне нужно было сделать, это, на мой взгляд, «def yourcsv(request, pk):» и теперь я могу получить к нему доступ! Еще раз спасибо за всю вашу помощь!
Ответ №1:
#The url
url(r'^anote/(?P<pk>d )$', views.A_Note, name = 'anote'),
#The view
def A_Note(request, pk):
#the rest of code here
return render(request, "some.html", {"thing":thing, "pk":pk, "etc":etc})
Я узнал, что острые скобки <> в URL-адресе передают значение в представление, где к нему затем можно получить доступ в качестве аргумента при определении представления. Оттуда его можно легко использовать в коде.
Спасибо!