2015-09-27 33 views
0

我正在使用Django/Python創建網站。我剛剛開始註冊頁面,用戶將輸入他們的信息,數據應該流入Django附帶的sqlite3數據庫。我從昨天晚上(現在不到24小時)試圖弄清爲什麼我的表格沒有出現。我試着附上我得到的和我瞄準的東西,但是沒有足夠的聲譽點,所以 請訪問:https://www.youtube.com/watch?v=yfjhLKL-_5Q 9.09分鐘爲我的目標。請注意:youtube vid上的'welcome'一詞已被我替換爲'Thank you'。這段代碼在我的views.py中。無法在Django中使用「窗體」

問題是,用戶在視頻中輸入他們的全名和電子郵件(我已經用職業,名字,姓氏等替換)的小盒子根本沒有出現......相反, '謝謝'出現在我的'用戶名'(相當於jmitchel3)和註冊按鈕,但沒有文本框的請求。我的代碼如下。

我最初認爲我的表單安裝不正確,所以我將我的代碼與成功並沒有運氣的頁面進行了比較。我做了車型相同,但什麼也看不到有任何...

models.py: 

from django.db import models 

# Create your models here. 
class Register(models.Model): 

    Profession = models.CharField(max_length=120) 
    first_name = models.CharField(max_length=120) 
    last_name = models.CharField(max_length=120) 
    email = models.EmailField(max_length = 120, unique = True) 
    phone_number = models.CharField(max_length=120) 
    instgram_ID = models.CharField(max_length=120, blank=True, null=True) 
    facebook_ID = models.CharField(max_length=120, blank=True, null=True) 
    twitter_ID = models.CharField(max_length=120, blank=True, null=True) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return self.email 

    forms.py 

    from django import forms 

from .models import Register 

class RegisterForm(forms.ModelForm): 
    class Meta: 
     model = Register 
     fields = ['first_name', 'last_name', 'email', 'phone_number', 'instgram_ID', 'facebook_ID', 'twitter_ID'] 

    def clean_email(self): 
     email = self.cleaned_data.get('email') 
     email_base, provider = email.split("@") 
     domain, extension = provider.split('.') 
     #if not domain = 'USC': 
     # raise forms.ValidationError("Please make sure you use your USC email.") 
     #if not extension == "edu": 
     # raise forms.ValidationError("Please use a valid .EDU email address") 

      #return email 

     def clean_full_name(self): 
      full_name = self.cleaned_data.get('full_name') 
      #write validation code. 
      return full_name 

     admin.py 

     from django.contrib import admin 

    # Register your models here. 

    from .forms import RegisterForm 
    from .models import Register 

    class RegisterAdmin(admin.ModelAdmin): 
     list_display = ["__unicode__", "timestamp", "updated"] 
     form = RegisterForm 
     #class Meta: 
     # model = Register 
    ) 

    admin.site.register(Register, RegisterAdmin 

views.py 

from django.shortcuts import render 

from .forms import RegisterForm 
# Create your views here. 
def home(request): 
    title = 'Welcome' 
    form = RegisterForm(request.POST or None) 
    context = { 
    "title": title, 
    "form": form 
    } 

    if form.is_valid(): 
     instance = form.save(commit=False) 
     if not instance.full_name: 
      instance.full_name = "Justin" 
     instance.save 

    context = { 
     "title": "Thank you" 
     } 

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

home.html: 

<h1>{{title}}</h1> 

{{ user }} 
{{ request.user }} 

<form method ='POST' action=''>{% csrf_token %} 

{{ form }} 

<input type='submit' value = 'Register'> 

<!-- <input> type='text'> --> 
<!-- <input> --> 

    </form> 

這已經有一段時間,因爲我一直在這裏,所以,如果我需要增加任何功能,讓我知道..

+0

您需要對問題更加具體。您是否說在註冊的管理頁面上沒有可見的字段?此代碼中沒有任何內容打印「歡迎」,所以必須有其他代碼。 –

+0

嗨@DanielRoseman謝謝。我的妹妹說了同樣的話。我認爲我有點依賴圖像來解釋我無法添加的內容。 youtube vid上的'welcome'這個詞已被我替換爲'Thank you'。這段代碼在我的views.py中。問題是,用戶輸入他們的全名和電子郵件(我用Profesion,first_name,last_name等取代)的小盒子沒有出現..我已經添加了我的views.py和home.html代碼。 – vtj808

回答

0

您有縮進錯誤。應該在is_valid()塊內縮進context被替換的部分{"title": "Thank you"}。它現在在哪裏,它正在取代先前定義的上下文,其結果是你沒有發送表單到模板。

+0

令人驚歎。就是這樣。有用!哇,這讓我很累,我實際上並不太熟悉壓縮錯誤,所以感謝mil。試圖投票答案,但不會允許我。欣賞它 – vtj808