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