2015-03-04 2 views
0

У меня есть базовый API-интерфейс django-rest для программы, которую я написал. Программа извлекает данные из базы данных и отображает их в браузере. База данных запрашивается с использованием двух входных значений «a» и «b».Django шаблон/форма для ввода пользователем

Ex:

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 заявлений, как я пишу код, который позволит пользователю ввести значения для «а» и «B» из браузера?

Когда я ввожу URL-адрес, у меня должна быть страница для ввода «a» и «b». Как только я нажимаю «Отправить», он должен отображать сообщения (выполненные с помощью обратного ответа). Нет функции «PUT», только «GET» с использованием пользовательских входов.

Заранее спасибо.

ответ

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

Если вы отправляете форму с использованием GET, значения должны быть в request.GET. Так что-то вроде request.GET['a']? Объект request должен быть доступен в вашем представлении Django.

Смежные вопросы