【问题标题】:Django template/form for user input用于用户输入的 Django 模板/表单
【发布时间】:2015-05-05 20:03:32
【问题描述】:

我为我编写的程序运行了一个基本的 django-rest API。该程序从数据库中检索数据并将其显示在浏览器上。使用两个输入值“a”和“b”查询数据库。

例如:

a = raw_input('Enter A.')
b = raw_input('Enter B.')
response = HttpResponse()
for post in db.collection.find({'field1' : a, 'field2' : b})
    response.write(post)
return response

我如何编写代码来代替 raw_input 语句,使用户能够从浏览器中输入“a”和“b”的值?

当我输入 URL 时,我应该有一个页面可以输入“a”和“b”。一旦我点击提交,它应该显示帖子(通过返回响应完成)。没有“PUT”功能,只有“GET”使用用户输入。

提前致谢。

【问题讨论】:

    标签: python django django-forms django-rest-framework


    【解决方案1】:

    好的,所以你首先需要一个带有表单的页面;

    <form action="{% url 'searchview' %}" method="GET">
      <label>A:</label>
        <input name="a">
      <label>B:</label>  
        <input name="b">
    
        <button type="submit">
            Search
        </button>
    </form>
    

    然后是一个 URL 来捕获它;

    url(r'^search/(?P<a>\w+)/(?P<b>\w+)/$', 'views.search_view', name="searchview")
    

    然后是处理该 URL 的视图;

    def search_view(request, a, b):
        myobj = MyModel.objects.get(field1=a, field2=b)
    

    或者基于类的视图是这样的;

    class SearchView(View):
        model = MyModel
        template_name = 'template.html'
    
        def get(self, request, *args, **kwargs):
            a = request.GET['a']
            b = request.GET['b']
            obj = self.model.get(field1=a, field2=b)
            return render(request, self.template_name, {'obj': obj})
    

    【讨论】:

      【解决方案2】:

      如果您使用 GET 提交表单,则值应位于 request.GET 中。像request.GET['a'] 这样的东西? request 对象应该在您的 Django 视图中可用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 2019-08-28
        • 2021-04-01
        • 2013-06-16
        • 2015-10-10
        • 2013-08-02
        • 1970-01-01
        相关资源
        最近更新 更多