2015-09-27 4 views
0

Я создаю сайт, используя Django/Python. Я только что начал страницу регистрации, где пользователь вводит свою информацию, и данные должны поступать в базу данных sqlite3, которая поставляется с Django. У меня есть с вчерашнего вечера (было чуть меньше 24 часов), пытаясь понять, почему мои формы не появляются. Я попытался подключить то, что я получаю, против того, к чему я стремился, но у меня недостаточно очков репутации, поэтому , пожалуйста, посетите: https://www.youtube.com/watch?v=yfjhLKL-_5Q 9.09mins за то, к чему я стремился. Обратите внимание: слово «welcome» на youtube vid было заменено мной «Спасибо». Этот код находится в моих views.py.Невозможно получить «форму», работающую в Django

Проблема заключается в том, что небольшие ящики, которые пользователь вводит в свое полное имя и электронную почту в видео (которые я заменил на Профессии, first_name, last_name и т. Д.) Вообще не появляются ... вместо этого я получаю только «Спасибо» появляется вместе с моим «именем пользователя» (эквивалентом 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 было заменено мной «Спасибо». Этот код находится в моих views.py. Проблема заключается в том, что небольшие ящики, которые пользователь вводит в их полное имя и адрес электронной почты (которые я заменил Profesion, first_name, last_name и т. Д.), Вообще не появляются. Я добавил код views.py и home.html также , – vtj808

ответ

0

У вас есть ошибка с отступом. Часть, в которой заменяется context, только {"title": "Thank you"} следует отступом в блоке is_valid(). Где он сейчас, он заменяет более раннее определение контекста, из-за чего вы не отправляете форму в шаблон.

+0

Amazing. Именно это. Оно работает! Ничего себе, что меня веками, я на самом деле не слишком хорошо знаком с ошибкой вдавливания, так что спасибо mil. Пытался проголосовать за ответ, но не позволил. Ценить это – vtj808