[英]How to render an html template with data from view?
我是django的新手。 我做了一個表格。 我希望如果成功填寫了表單,那么django應該重定向到顯示在表單中輸入名稱的成功頁面,但URL本身中不應該存在任何參數。
我在互聯網上搜索,得到的解決方案是使用pk作為獲取參數重定向到url,該參數獲取數據並顯示在視圖中。 但是我不想在url本身中傳遞任何東西。 有些網站說http無法重定向帖子數據。
這是我的views.py
class UserRegistrationView(CreateView):
model = UserForm
template_name = 'userregistration.html'
form_class = UserForm
success_url = 'success'
def get_success_url(self):
return reverse('success',kwargs = {'name' : self.object.firstName})
這是我要重定向到的模板:
<h2>Congratualations for registering {{name}} </h2>
基本上,我想要的是,如果該人填寫的表格中提到他/她的名字為“ xyz”,那么重定向成功頁面應顯示“恭喜您注冊xyz”
您可以使用django會話,我相信它默認安裝在1.8中
看這里
# Set a session value:
request.session["fav_color"] = "blue"
# Get a session value -- this could be called in a different view,
# or many requests later (or both):
fav_color = request.session["fav_color"]
# Clear an item from the session:
del request.session["fav_color"]
您可以通過會話傳遞pk並在另一個視圖中提取對象,而不會影響您的網址。 確保自己清理干凈。
讓我知道是否需要更多幫助。
在視圖之間傳遞數據的一種可能方式是通過會話。 因此,在您的UserRegistrationView中,您需要重寫form_valid方法,如下所示。
class UserRegsitrationView(CreateView):
def form_valid(self,form):
self.request.session['name'] = self.object.firstName
return super(UserRegistrationView,self).form_valid(form)
class SuccessView(TemplateView):
template_name = "success_template.html"
def get_context_data(self,**kwargs):
context = super(SuccessView,self).get_context_data(**kwargs)
context['name'] = self.request.session.get('name')
del self.request.session['name']
return context
你可以在你的代碼修改一件事是,你不必聲明success_url
如果要覆蓋get_success_url
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.