0
我正在創建一個播客管理網站,您必須註冊一個用戶w/django redux註冊並提供用戶名,電子郵件&密碼。完成後,它會直接轉到儀表板,在其中設置播客。當他們要設置它時,我希望他們爲我提供一個company_name
,first_name
和last_name
並保存它。這是我的看法是如何設置它:視圖producer.pfviews.podcastsetup沒有返回HttpResponse對象。它返回None而不是
from django.conf import settings
from django.shortcuts import render
from .forms import PodcastSetupForm
from .models import Client
def podcastsetup(request):
title = 'Podcast Setup'
title_align_center = True
form = PodcastSetupForm(request.POST or None)
context = {
"title": title,
"form": form
}
if form.is_valid():
instance = form.save(commit=False)
company_name = form.cleaned_data.get("company_name")
first_name = form.cleaned_data.get("first_name")
last_name = form.cleaned_data.get("last_name")
instance.company_name = company_name
instance.first_name = first_name
instance.last_name = last_name
instance.save()
return render(request, "forms.html", context)
當我嘗試在網站(http://xxx/podcastsetup/),我收到以下錯誤獲得:
Environment:
Request Method: GET
Request URL: http://xxx/podcastsetup/
Django Version: 1.9
Python Version: 2.7.6
Installed Applications:
('producer',
'django.contrib.admin',
'django.contrib.sites',
'registration',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions',
'randomslugfield',
'adminsortable2',
'crispy_forms')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
158. % (callback.__module__, view_name))
Exception Type: ValueError at /podcastsetup/
Exception Value: The view producer.pfviews.podcastsetup didn't return an HttpResponse object. It returned None instead.
這是我在我forms.py:
from django import forms
from .models import Client
class PodcastSetupForm(forms.ModelForm):
class Meta:
model = Client
fields = ['company_name', 'first_name', 'last_name']
def clean_company_name(self):
company_name = self.cleaned_data.get('company_name')
return company_name
def clean_first_name(self):
first_name = self.cleaned_data.get('first_name')
return first_name
def clean_last_name(self):
last_name = self.cleaned_data.get('last_name')
return last_name
我urls.py:
from django.conf.urls import include, url
from django.conf import settings
from django.contrib import admin
from django.conf.urls.static import static
admin.site.site_header = 'FullCast Admin'
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('producer.urls')),
url(r'^accounts/', include('registration.backends.default.urls')),
url(r'^dashboard/', 'producer.pfviews.dashboard', name="dashboard"),
url(r'^podcastsetup/', 'producer.pfviews.podcastsetup', name="podcastsetup"),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
而且Client
類models.py:
from django.db import models
from django.conf import settings
from django.utils.encoding import smart_text
from producer import myFields
from randomslugfield import RandomSlugField
from django.contrib.auth.models import User
class Client(TimeStampedModel):
company_name = models.CharField(max_length=64)
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
email = models.EmailField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
def full_name(self):
return smart_text('%s %s' % (self.first_name, self.last_name))
def __unicode__(self):
return smart_text(self.company_name)
希望得到一些幫助
很高興知道..謝謝! –