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

你好 Stackoverflow 社区!

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

作为一个 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 示例的教程,尽管没有成功。

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

【问题讨论】:

    标签: javascript html django django-forms django-urls


    【解决方案1】:

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

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

    from django.shortcuts import redirect
    
    folder_name = request.POST['FolderName']
    return redirect('ShowFolder', (folder_name,))
    

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2012-12-08
      • 2012-02-04
      • 2017-08-10
      • 1970-01-01
      相关资源
      最近更新 更多