Django:HTML表单提交调用函数并重定向到另一个页面

Posted

技术标签:

【中文标题】Django:HTML表单提交调用函数并重定向到另一个页面【英文标题】:Django: HTML Form Submit to Call Function and Redirect to another Page 【发布时间】:2014-03-06 05:27:26 【问题描述】:

你好 *** 社区!

这标志着长期追随者的第一篇文章!我几乎总能在这里找到我看似不可能的问题的答案,但时候到了,我愤怒地放弃了谷歌搜索并决定在这里发帖!感谢所有帮助!

作为一个 Django 菜鸟,我目前正在努力设计一个只包含 2 种 URL 的应用程序(想想:appear.in)所以基本上,localhost/ 的主页有一个用于输入文件夹名称和创建文件夹按钮的表单。

如果 localhost/FOLDER1/ 确实存在,则文件夹将被展开,否则(即 localhost/NOTEXISTING/)它将重定向到主页,并使用 value='NOTEXISTING' 的呈现 html 文本输入。 补充目录表提供有关 ForeignKey(Folder) 的详细信息

我目前的 urlpatters 是:

url(r'(\w+)/$', ShowFolder), #Trying to capture the folder name
url(r'^$', Homepage),        #Trying to capture blank URL -> home

views.py 包含:

def Homepage(request):
    t = get_template('home.html')
    html=t.render(Context('foldername': foldername))
    return HttpResponse(html)

def ShowFolder(request, foldername):
    try:
         folder = Folder.objects.get(name=foldername)
         html=t.render(Context('folder': folder ))
         return HttpResponse(html)
    except Folder.DoesNotExist:
         t = get_template('home.html')
         fradd = ("Folder not found, wanna create one?")
         html=t.render(Context('foldername': foldername))
         return HttpResponse(fradd + html)

HTML 表单如下所示:

 <form >
<b>Folder Name: </b>
<input type="text" name="FodlerName" value="  foldername  ">
<input type="button" id="btn" value="Create Folder" name="btn">
 </form> 

所以真正阻碍我进步的是我缺乏关于页面重定向和捕获提交事件的知识。

我现在想要的是从输入中获取文件夹名称,使用该名称创建一个文件夹并重定向到 localhost/NEWFOLDER,而无需在此过程中进行任何更多的 URL 修改。 我用 JS 和 JQuery 尝试了无数关于表单和 HTML 示例的教程,尽管没有成功。

任何帮助将不胜感激! 预先真诚地感谢您!

【问题讨论】:

【参考方案1】:

我不完全确定什么视图应该在这里做什么。但是,通过request.POST['FolderName'] 从表单帖子中获取文件夹名称很容易,假设您使用 POST 提交表单,而您不是但应该这样做。

使用重定向快捷方式重定向到该名称也很简单:

from django.shortcuts import redirect

folder_name = request.POST['FolderName']
return redirect('ShowFolder', (folder_name,))

【讨论】:

以上是关于Django:HTML表单提交调用函数并重定向到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

提交 HTML 表单,执行 javascript 功能(警报然后重定向)

Django 会话表单(临时保存表单)

Django POST 不调用视图

将表单提交到电子邮件并重定向不起作用

Django Createview根据外键的id保存表单并重定向到页面

毕业设计——Django项目网页刷新表单重复提交问题