用于用户输入的Django模板/表单

时间:2015-03-04 17:37:48

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

我为我编写的程序运行了一个基本的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

如何编写一个代码,使用户能够输入' a'的值,而不是raw_input语句。和' b'从浏览器?

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

<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})

答案 1 :(得分:0)

如果您使用GET提交表单,则值应该在request.GET中。那么request.GET['a']之类的东西呢?您的Django视图中应该可以使用request对象。