我正在嘗試通過表單將“message_name”傳遞給 index.html,但在提交表單后背景關系不會呈現。它出現一個空白頁。我可以通過頁面檢查器看到文本已提交但內容未顯示。
我想這應該很容易,但直到現在我才找到解決方案。
預先感謝您的幫助。
#views.py
from django.shortcuts import render
from .models import Home, About, Profile, Category, Skills, Item, Audiogil, ImageSkills
from django.core.paginator import Paginator
def index(request):
# Home
home = Home.objects.latest('updated')
# About
about = About.objects.latest('updated')
#profiles = Profile.objects.filter(about=about)
profiles = Profile.objects.all()
# Skills
categories = Category.objects.all()
skillsimage = ImageSkills.objects.latest('updated')
# Videos
videos = Item.objects.all()
# Setup video pagination
p = Paginator(Item.objects.all(), 2)
page = request.GET.get('page')
video_list = p.get_page(page)
# Audios
audios = Audiogil.objects.all()
context = {
'home': home,
'about': about,
'profiles': profiles,
'categories': categories,
'videos': videos,
'video_list': video_list,
'audios': audios,
'skillsimage': skillsimage,
}
if request.method == "POST":
message_name = request.POST['message-name']
message_email = request.POST['message-email']
message = request.POST['message']
return render(request, 'index.html', {'message_name':message_name})
return render(request, 'index.html', context)
#模板 ....
<!--===== CONTACT =====-->
<section class="contact section" id="contact">
<h2 class="section-title">Contacto - {{ message_name }}</h2>
<div class="contact__container bd-grid">
<div class="contact__info">
<h3 class="contact__subtitle">EMAIL</h3>
<span class="contact__text">info.mail.com</span>
</div>
<form action="{% url 'index' %}" class="contact__form" method="post">
{% csrf_token %}
<div class="contact__inputs">
<input type="text" placeholder="Nome" name="message-name" class="contact__input" />
<input type="mail" placeholder="Email" name="message-email" class="contact__input" />
</div>
<textarea
name="message"
id=""
cols="0"
rows="10"
class="contact__input"
></textarea>
<input type="submit" value="Enviar" class="contact__button" />
</form>
</div>
</section>
</main>
uj5u.com熱心網友回復:
改變這個:
return render(request, 'index.html', {'message_name':message_name})
...對此:
return render(request, 'index.html', context)
...如果您的意圖是獲取您在POST方法上方宣告的背景關系字典。
如果您想添加額外的背景關系,例如message_name,您可以執行以下操作:
if request.method == "POST":
context['message_name'] = request.POST['message-name']
message_email = request.POST['message-email']
message = request.POST['message']
# seems like you're missing (or not showing) more logic here...
...一旦你在上面的某個地方宣告了一個背景關系字典,你就可以這樣做,就像你所做的那樣。
最后一句話:在這個視圖中你有相當多的模型查詢。這些模型是否通過 OneToOne、ForeignKey 或 ManyToMany 關系相關?如果是這樣,為了提高效率,請考慮使用select_related()and/or方法減少查詢。prefetch_related()更多關于這里和這里的 Django 檔案。您可以訪問或遍歷模板中的相關物件,例如:
{{queried_object.related_object.field_value}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441769.html
標籤:Python 形式 django-views 使成为
上一篇:如何將資料表中的專案輸入文本框
