2014-02-21 2 views
2

Я хочу создать шаблон "index.html" Django, содержащий кнопку. Когда кнопка нажата, я хочу отобразить шаблон «home.html», который сам отображает значение «123». (Конечно, есть более простой способ сделать эту специфическую задачу - но я учусь Django, и так хочется, чтобы попробовать это так.)Форма - атрибут действия

Вот мой views.py файл:

from django.shortcuts import render 

def home(request, x) 
    context = {'x': x} 
    return render(request, 'home.html', context) 

Здесь мой urls.py файл:

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

from myapp import views 

urlpatterns = patterns('', 
url(r'^$', views.index, name='index'), 
url(r'^home', views.home, name='home'), 
) 

Вот мой home.html файл:

<html> 
<body> 
The value is: {{ x }} 
</body> 
</html> 

Наконец, вот мой файл index.html :

<html> 
<form method="post" action=???> 
<input type="button" value="Click Me"> 
</form> 

Возможно, кто-нибудь скажет мне, что мне нужно написать вместо ???, в атрибуте действия выше? Я пробовал настройку ??? = "{% url 'home' 123%}", но это дает мне ошибку «NoReverseMatch». Поэтому я подозреваю, что может быть что-то не так с моим urls.py файлом ...

Спасибо!

ответ

0

Вы получаете ошибку NoReverseMatch, потому что у вас нет URL-адреса, который захватывает 123, которые вы отправляете вместе с URL-адресом. Позвольте мне сказать вам простой способ:

Вы можете задать действие, как-то вроде:

action="/home/123" # or any integer you wish to send. 

И соответствовать этому URL в адресах ру, изменив URL домашней страницы, как:

url(r'^home/(?P<x>\d+)/$', views.home, name='home') 

Этом передает любой параметр, который вы отправляете в исходном URL (который должен быть целым числом в этом случае), как x. Таким образом, х будет отображаться в home.html

2

Перепишите ваш index.html как этот

<html> 
<form method="post" action=/home> 
<input type="hidden" name="my_value" value="123"> 
<input type="button" value="Click Me"> 
</form> 

Он содержит скрытую переменную my_value ее держать свою ценность 123. И я ваш view.py принять это значение, как это,

from django.shortcuts import render 

def home(request) 
    x = ' ' 
    if request.POST: 
     x = request.POST['my_value'] 
    context = {'x': x} 
    return render(request, 'home.html', context) 
Смежные вопросы