У меня есть несколько отдельных записей, сохраненных в базе данных (они называются «Вставки»). Для каждой из этих записей у меня есть случайно сгенерированная строка, которая сохраняется в поле с именем generated_url
, которое я затем могу ввести в адресную строку, чтобы получить доступ к деталям, связанным с этой конкретной записью. Переход на projectname.com/jF7Fwr напечатает все детали, связанные с записью, которая имеет jF7Fwr
как generated_url
.
Моя проблема заключается в том, что, хотя он правильно перенаправляет на страницу, я не получаю распечатанную информацию и не знаю, почему.
Вот соответствующая часть моего views.py
.
def home_view(request, *args, **kwargs):
print(args, kwargs)
print(request.user)
if request.method == 'POST':
form2 = PostForm(request.POST)
if form2.is_valid():
post = form2.save(commit=False)
post.poster = request.user
post.content = form2.cleaned_data.get('content')
post.title = form2.cleaned_data.get('title')
post.syntax = form2.cleaned_data.get('syntax')
post.public = form2.cleaned_data.get('public')
rand = str(uuid.uuid4())[:6]
while Paste.objects.filter(generated_url=rand):
rand = str(uuid.uuid4())[:6]
post.generated_url = rand
form2.save()
context = {
"poster_name": post.poster,
"paste_contents": post.content,
"paste_title": post.title,
"paste_syntax": post.syntax,
"paste_visible": post.public
}
return HttpResponseRedirect(reverse('details', args=(post.generated_url,)))
else:
form2 = PostForm()
return render(request, "home.html", {'form2': form2})
def detail_view(request, *args, **kwargs):
return render(request, "paste_detail.html", {})
А вот моя details.html
страница:
{% extends "base.html" %}
{% block content %}
<p>Content of post:</p>
I AM REDIRECTED
<h1>Name of post: {{ post.title }}</h1>
<p>Content of post:</p>
<p>{{post.content|linebreaks}}</p>
<p>{{ poster_name }}
{{ paste_contents }}
{{ paste_title }}
{{ paste_syntax }}
{{ paste_visible }}</p>
<!--<form action="/{{post.generated_url}}/delete" method="post">
{% csrf_token %}
<input type="submit" name="delete" value="Delete" />
</form>-->
{% endblock %}
EDIT:
Должен ли мой detail_view
быть примерно таким?
def detail_view(request, *args, **kwargs):
form2 = PostForm(request.POST)
post = form2.save(commit=False)
post.poster = request.user
post.content = form2.cleaned_data.get('content')
post.syntax = form2.cleaned_data.get('syntax')
post.public = form2.cleaned_data.get('public')
rand = str(uuid.uuid4())[:6]
while Paste.objects.filter(generated_url=rand):
rand = str(uuid.uuid4())[:6]
post.generated_url = rand
post.save()
context = {
"poster_name": post.poster,
"paste_contents": post.content,
"paste_title": post.title,
"paste_syntax": post.syntax,
"paste_visible": post.public
}
return render(request, "paste_detail.html", context)
Я просто немного озадачен тем, как объем переменных должен переноситься из каждого def
.