Jak złożyć formularz z HREF w Django?


Mam link, który po kliknięciu musi wysłać formularz zawierający niewidzialny pole za pośrednictwem żądania pocztowego. Wtedy muszę być w stanie uzyskać wartość pola, na przykład:
var = request.POST.get('name_of_var', '')

Po obejrzeniu kilku postów wydaje mi się, że nie mogę tego uruchomić. Oto, co mam do tej pory:
<form id="form-id" method="post">
[*]
<input type="hidden" value="{{ obj }}" name="name_of_var">
[url="/activities" onclick="document.getElementById('form-id').submit();"> {{obj}} [/url]
[/*]
</form>

Moim zdaniem mam coś takiego, ale żądanie POST nigdy nie odpala. Jaki może być tutaj problem?:
if request.POST:
var = request.POST.get('name_of_var', '')
return render_to_response('activities/display_activities.html', var)


EDIT
: Oto moje widoki.py:
def index(request):
if request.method == "POST":
var = request.POST.get('name_of_var', '')
return render_to_response('activities/display_activities.html', var) category1 = Service.objects.filter(category = 'Sports')
category2 = Service.objects.filter(category = 'Dance')
category3 = Service.objects.filter(category = 'Music')
category4 = Service.objects.filter(category = 'Academics')
category5 = Service.objects.filter(category = 'Art')
category6 = Service.objects.filter(category = 'College') subcat1 = []
subcat2 = []
subcat3 = []
subcat4 = []
subcat5 = []
subcat6 = [] for obj in category1:
subcat1.append(obj.subcategory)
subcat1 = list(set(subcat1)) for obj in category2:
subcat2.append(obj.subcategory)
subcat2 = list(set(subcat2)) for obj in category3:
subcat3.append(obj.subcategory)
subcat3 = list(set(subcat3)) for obj in category4:
subcat4.append(obj.subcategory)
subcat4 = list(set(subcat4)) for obj in category5:
subcat5.append(obj.subcategory)
subcat5 = list(set(subcat5)) for obj in category6:
subcat6.append(obj.subcategory)
subcat6 = list(set(subcat6)) return render_to_response('activities/activities.html', {'user': request.user,
'category1':category1, 'category2':category2, 'category3':category3,
'category4':category4, 'category5':category5, 'category6':category6,
'subcat1':subcat1,'subcat2':subcat2, 'subcat3':subcat3,
'subcat4':subcat4, 'subcat5':subcat5,'subcat6':subcat6 })

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W jaki sposób ostatecznie zdecydowałem ten problem. Poniżej znajduje się przykład, który jest zupełnie inny niż mój początkowy post. Uwaga: Wymień identyfikator i działanie za pomocą odpowiedniego kodu. W moim przykładzie {{Form4}} jest przesyłany przez widok i jest niestandardowym formularzem w moich formularzach.py ​​z jednym polem.
<form id = "form-id" action="/events/attending" method="post">{% csrf_token %}
[url="#" onclick="document.forms['form-id'].submit();" > Submit [/url]
{{form4.going}} I am attending this event!
</form>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz sprawdzić post w ten sposób:
if request.method == "POST": # this will tell you if you are actually receiving a POST
...

zamiast tego:
if request.POST: # not reliable
...

Dlaczego tak jest, zobacz

w dokumentach.
https://docs.djangoproject.com ... .POST
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz użyć
A & GT;
w taki sposób, aby zapobiec automatycznemu skoku:
[url="javascript:void(0);" onclick="document.getElementById('form-id').submit();"> {{obj}} [/url]

Zakłada się, że przesyłasz formularz pod aktualny adres URL, jeśli chcesz przesłać go pod inny adres, sugeruję użycie
jquery
zamiast
& < a & >
lubię to:
<form id="form-id" method="post">
[*]
<input type="hidden" value=" obj " name="name_of_var">
<a id="sub" href="javascript:void(0);" onclick="document.getElementById('form-id').submit();"> tttttttttt[/url]
[/*]

<script type="text/javascript">
$(document).delegate("#sub", "click", function () {
$.ajax({
type: "POST",
url: "/your/url/",
data: {name_of_var: value_of_var},
dataType: "json",
success: function () {
//do something
}
})
});
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Biorąc pod uwagę brak danych, myślę, że twoja prośba nigdy nie zadziała, najprawdopodobniej z powodu braku białej linii ukośnej na końcu href (zakładając, że wysłać wiadomość do tego adresu URL). Jest to dobra praktyka, aby mieć białe ukośne funkcje dla żądania pocztowego!
Twój kod:
[url="/activities/view" onclick="document.getElementById('form-id').submit();"> {{obj}} [/url]

Musi być
[url="/activities/view/" onclick="document.getElementById('form-id').submit();"> {{obj}} [/url]
# ^ Note the trailing slash!

Daj mi znać, jeśli to zadziała
Twoje zdrowie
Borobirdman.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się