Как сделать элементарную кнопку в django?

Пытаюсь сделать кнопку на страничке "подписаться", создал форму по модели, кнопка появилась, при нажатии в логах IDE PyCharm выдает "POST /multiuniverse/1/ HTTP/1.1" 200 607" , но как обработать этот ответ - не понимаю. У меня для этого создан метод mymethod, но как его прописать в кнопку?

template:

<form action="#" method="post">
{% csrf_token %}
<input type="submit" class="btn" value="Button" name="mybtn">
</form>

views.py:

class  UniverseDetailView(DetailView):
    model = Members
    template_name = 'multiuniverse/universe_detail.html'

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        context = self.get_context_data(object=self.object)
        return self.render_to_response(context)

    def mymethod(request):
        print ('Dont work :( ')    
        if(request.POST.get('mybtn')):
            print ('Works!')
        return render_to_response('App/yourtemplate.html')

models.py:

class Members(models.Model):            #ManyToMany
    uni = models.ForeignKey(Universe)
    profile = models.ForeignKey(Profile)
    ...

forms.py
class PodpiskaForm(ModelForm):
    class Meta:
        model = Members
        fields = ()

urls.py:
from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView
from django.contrib import admin


admin.autodiscover()

urlpatterns = patterns('',

...

    url(r'^multiuniverse/', include('multiuniverse.urls')),

...
)


multiuniverse/urls.py:

from django.conf.urls import patterns, url

from views import UniverseListView, UniverseDetailView

urlpatterns = patterns('',

url(r'^$', UniverseListView.as_view(), name='multiuniverse'), 
url(r'^(?P<pk>\d+)/$', UniverseDetailView.as_view()), 
)
  • Вопрос задан
  • 10948 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rsludge
1. Странно, что вы используете DetailView для подписки, наверняка в стандартных Class Based Views есть кандидаты получше, например UpdateView.
2. В форму в поле action нужно вписать url, на который эта форма будет отправляться, сейчас она отправляется на url теукщей страницы.
3. Логику по изменению модели через форму нужно вынести в класс формы, в вашем случае PodpiskaForm, переопределив один из стандартных методов ModelForm
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы