2016-01-07 5 views
0

Я только что установил django-newsletter и до сих пор все тесты прошли отлично. Но я не совсем уверен, как вы можете включить форму подписки на мой взгляд, чтобы подписчики могли зарегистрироваться. Я создал объект Newsletter, называемый «Test», который отображается в Admin.как использовать вид и формы приложения django-news

Исходный код взглядов Джанго-бюллетень приложение https://github.com/dokterbob/django-newsletter/blob/master/newsletter/views.py

Что я сделал:

в views.py

from django.shortcuts import render 
from newsletter.forms import SubscribeRequestForm 

def landing(request): 
    subscribeForm = SubscribeRequestForm(request.POST or None) 

    context = { 
     'subscribeForm': subscribeForm, 
    } 

    return render(request, "landing.html", context) 

TraceBack (самый последний вызов последнего):

File "/local/lib/python2.7/site-packages/django/core/handlers/base.py", 
line 149, in get_response 
response = self.process_exception_by_middleware(e, request) 
File "/local/lib/python2.7/site-packages/django/core/handlers/base.py",  
line 147, in get_response 
response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/src/Landing/views.py", line 12, in landing 
subscribeForm = SubscribeRequestForm(request.POST or None) 
File "/src/django-newsletter/newsletter/forms.py", line 18, in __init__ 
assert 'newsletter' in kwargs, 'No newsletter specified' 
AssertionError: No newsletter specified 

и когда я могу изменить его на следующее:

в views.py

from django.shortcuts import render 
from newsletter.forms import SubscribeRequestForm 

def landing(request): 
    subscribeForm = SubscribeRequestForm(request.POST or None, newsletter="Test") 

    context = { 
     'subscribeForm': subscribeForm, 
    } 

    return render(request, "landing.html", context) 

Внутренняя ошибка сервера:/ TraceBack (самый последний вызов последнего):

File "/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response 
response = self.process_exception_by_middleware(e, request) 
File "/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response 
response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/src/Landing/views.py", line 10, in landing 
subscribeForm = SubscribeRequestForm(request.POST or None, newsletter="Test") 
File "/src/django-newsletter/newsletter/forms.py", line 30, in __init__ 
self.instance.newsletter = newsletter 
File "/local/lib/python2.7/site-packages/django/db/models/fields/related_descriptors.py", line 207, in __set__ 
self.field.remote_field.model._meta.object_name, 
ValueError: Cannot assign "'Test'": "Subscription.newsletter" must be a "Newsletter" instance. 

Первый Редактировать

После SO предложения я попробовал:

в views.py

from django.shortcuts import render 
from newsletter.forms import SubscribeRequestForm 
import newsletter 

def landing(request): 
    newsletter_obj = newsletter.objects.get(title="Test") 
    subscribeForm = SubscribeRequestForm(request.POST or None, newsletter=newsletter_obj) 

    context = { 
     'subscribeForm': subscribeForm, 
    } 

    return render(request, "landing.html", context) 

Внутренняя ошибка сервера:/ Traceback (самый последний вызов последнего):

File "/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response 
response = self.process_exception_by_middleware(e, request) 
File "/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response 
response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/src/Landing/views.py", line 9, in landing 
newsletter_obj = newsletter.objects.get(title="Test") 
AttributeError: 'module' object has no attribute 'objects' 

ответ

1

сообщение об ошибке говорит, что вам нужно для назначения объекта Newsletter, поэтому вам, вероятно, необходимо будет сделать следующее:

newsletter = Newsletter.objects.get(title="Test") 
subscribeForm = SubscribeRequestForm(request.POST or None, newsletter=newsletter) 
+0

Я не упоминал об этом в вопросе, но я тоже это пробовал, я получил ошибку «NameError: global name Test is not defined» (или информационный бюллетень после вашего кода), потому что я не могу импортировать объект информационного бюллетеня от администратора до Посмотреть. Это, по-видимому, специфический импорт пакетов. Я читаю исходный код, чтобы выяснить, как это сделать. – wacax

+0

Можете ли вы показать полную информацию об этой ошибке вместе с соответствующим кодом. – mariodev