2016-05-29 92 views
0

我正在創建一個播客管理網站,您必須註冊一個用戶w/django redux註冊並提供用戶名,電子郵件&密碼。完成後,它會直接轉到儀表板,在其中設置播客。當他們要設置它時,我希望他們爲我提供一個company_namefirst_namelast_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) 

而且Clientmodels.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) 

希望得到一些幫助

回答

1
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) 
    else: 
     return render(request, "forms.html", context) 

試試這個,你需要即使返回響應表格無效。

+0

很高興知道..謝謝! –

相關問題