django中非常简单的用户输入

 吴佑霖雅旺 发布于 2022-12-31 15:33

我的潜在困难是我无法理解django模板,视图和网址是如何绑在一起的...提示用户输入字符串的最简单,最简单的方法是什么,然后使用该字符串查询数据库(最好w/python模型不是原始的SQL查询)?我应该使用GET和POST方法吗?我应该使用表格吗?我需要使用模板还是可以使用通用视图?

当我尝试提交输入时,它只是重新加载输入页面.

views.py:

from django.shortcuts import render
from django.shortcuts import HttpResponse
from People.models import Person

def index(request):
    return render(request, 'People/index.html')

def search(request):
    search_id = request.POST.get('textfield', None)
    try:
        user = Person.objects.get(MAIN_AUTHOR = search_id)
        #do something with user
        html = ("

%s

", user) return HttpResponse(html) except Person.DoesNotExist: return HttpResponse("no such user")

urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^People/', 'People.views.index'), 
    url(r'^People/send/', 'People.views.search'),
)

模板:

{% csrf_token %}

我错过了什么或做错了什么?

1 个回答
  • 如果我理解正确,您希望从用户那里获取一些输入,查询数据库并根据输入显示用户结果.为此,您可以创建一个简单的django表单来获取输入.然后,您可以将参数传递给GET请求中的视图,并在数据库中查询关键字.

    编辑:我编辑了代码.它现在应该工作.

    views.py

    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    from .models import Person
    from django.core.exceptions import *
    
    def index(request):
        return render(request, 'form.html')
    
    def search(request):
        if request.method == 'POST':
            search_id = request.POST.get('textfield', None)
            try:
                user = Person.objects.get(name = search_id)
                #do something with user
                html = ("<H1>%s</H1>", user)
                return HttpResponse(html)
            except Person.DoesNotExist:
                return HttpResponse("no such user")  
        else:
            return render(request, 'form.html')
    

    urls.py

    from django.conf.urls import patterns, include, url
    from People.views import *
    
    urlpatterns = patterns('',
        url(r'^search/', search),
        url(r'^index/', index)
    )
    

    form.html

    <form method="POST" action="/search">
    {% csrf_token %}
    <input type="text" name="textfield">
    
    <button type="submit">Upload text</button>
    </form>
    

    另外,请确保将模板放在一个名为的单独文件夹中templates,并将其添加到settings.py:

    TEMPLATE_DIRS = (
        os.path.join(os.path.dirname(__file__), '../templates').replace('\\','/'),
    )
    

    2022-12-31 15:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有