Как работать с мезонином
processor_for.py
from django import forms
from django.http import HttpResponseRedirect
from mezzanine.pages.page_processors import processor_for
from .models import Book
class BookForm(forms.Form):
name = forms.CharField()
email = forms.EmailField()
@processor_for(Author)
def author_form(request, page):
form = BookForm()
if request.method == "POST":
form =BookForm(request.POST)
if form.is_valid():
# Form processing goes here.
redirect = request.path + "?submitted=true"
return HttpResponseRedirect(redirect)
return {"form": form}
models.py
from django.db import models
from time import time
class Book(models.Model):
book_name= models.CharField(max_length=200, unique = True)
def __unicode__(self):
return self.book_name
views.py
def create_book (request):
if request.POST:
form = BookForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/all/')
else:
form = BookForm()
args= {}
args.update(csrf(request))
args['form'] = form
return render_to_response('create_Book.html', args)
urls.py
urlpatterns += patterns('',
url(r'^/xyz/$', create_book))
create_Book.html
<form action="/xyz/" method="post" enctype="multipart/form-data">{% csrf_token %}
{{form.as_ul}}
<input type="submit" name="submit" value="create"/>
</form>
Это то, что я делаю, но я все еще не могу получить доступ к форме. Где я делаю неправильно. буду вам благодарен. Пожалуйста, отметьте, что не так в коде?
2 ответа
Решение
Две проблемы с синтаксисом:
1) Всегда определяйте имя вашего процессора в " " как @processor_for("Author")
2) URL для процессоров страниц, таких как:
url("^xyz/$", "mezzanine.pages.views.page", {"slug": "Author"}, name="Author"),
Согласно вашему коду и вашему объяснению. Пожалуйста, смотрите ваш код в urls.py
urlpatterns + = Patterns('', url(r'^xyz/$', create_book)) # вы должны писать как ^ xyz / $
Пожалуйста, следуйте документации Django