簡體   English   中英

如何使用視圖數據呈現HTML模板?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM