2015-08-11 3 views
0

Я делаю знак в системе в Django Python, я готовил формы.py, views.py и сам шаблон, но пока форма не загружается на шаблоне, может ли кто-нибудь помочь?Форма Django не будет отображаться на шаблоне

Forms.py

class Email_Only_SignUp_Form(forms.Form): 
    email = forms.EmailField(initial='Your Email...') 

Views.py

def email_only_signup_form(request, template_name): 
    if request.method == 'POST': 
     signup_form = Email_Only_SignUp_Form(request.POST) 

     if signup_form.is_valid(): 
      email = signup_form.cleaned_data['email'] 
      username = email 

      try: 
       #check for duplicate username 
        User.objects.get(username=username) 
        email_error = 'email already exist' 
      except: 
       #initial creation of user object 
       try: 
        import os, random, string 

        length = 13 
        chars = string.ascii_letters + string.digits + '[email protected]$()' 
        random.seed = (os.urandom(1024)) 
        password = ''.join(random.choice(chars) for i in range(length)) 

        User.objects.create_user(username, 
              username, 
              password, 
        ) 
        user = User.objects.get(username=username) 
        user_profile=UserProfile(user=user) 
        user_profile.save() 

        #send email to user 
        try: 
         admin_email = settings.EMAIL_ORIGIN_MEMBERS 
         email_txt = loader.get_template('account/emails/createaccount.html') 
         email_html = loader.get_template('account/emails/createaccounthtml.html') 
         email_context = Context({'u_name': username, 
               'username': username, 
               'password': password, 
               }) 
         new_user_mail = EmailMultiAlternatives('Welcome!', 
                   email_txt.render(email_context), 
                   admin_email, 
                   [user.email, ], 
                   headers={'Reply-To': '[email protected]'} 
         ) 
         new_user_mail.attach_alternative(email_html.render(email_context), 'text/html') 
         new_user_mail.send() 
        except: 
         pass 

        return redirect('/account/thankyou/?next=%s'%next) 

       except: 
        pass 

     else: 
      print('user form in not valid') 

    else: 
     signup_form = Email_Only_SignUp_Form() 

    return render_to_response(template_name, locals(), context_instance=RequestContext(request)) 

email_only_signup_form.html

{% extends "index.html" %} 

{% block heroslider %} 
    <div class="page_title2" style="padding:150px 0px 50px 0px;"> 
     <div class="container"> 

      <h1>User Registration</h1> 

     </div> 
    </div><!-- end page title --> 
{% endblock %} 

{% block main_body %} 

<style type="text/css"> 
    input[type='radio'], input[type='checkbox'] { 
     width:20px; 
     vertical-align: middle; 
    } 

    div.reg_error { 
     position:relative; 
     top:-10px; 
     margin-top:0px; 
     padding-top:0px; 
     color:red; 
    } 
</style> 

<div class="container"> 
    <form class="pagesignup logiform" action="" method="POST">{% csrf_token %} 
     <div class="row"> 
      <div class="large-12 columns" style="margin-bottom: 30px;"> 
       <div class="reg_form"> 
        <div class="sky-form"> 
         <header>REGISTER</header> 
        </div> 

        <div class="row"> 
         <div class="large-12 columns"> 

          <p>Email<br/> 
           {{signup_form.email}} 
          <div class="reg_error">{{ signup_form.email.errors.as_text }}{{email_error}}</div></p> 

         </div> 
        </div> 
        <div class="row"> 
         <div class="large-12 large-centered columns" style="text-align:center;padding:20px;"> 
          <input class="but_medium1" style="border:none;" type = "submit" value="REGISTER" /><br> 
          <br>By clicking on register, you have read and agreed to our <a href="/terms-of-use/">terms of use</a> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </form> 
</div> 
<!-- Google Code for Sign Up Page (landed) Conversion Page --> 
<script type="text/javascript"> 
    /* <![CDATA[ */ 
    var google_conversion_id = 969557266; 
    var google_conversion_language = "en"; 
    var google_conversion_format = "3"; 
    var google_conversion_color = "ffffff"; 
    var google_conversion_label = "5zU4CJby_FoQkoqpzgM"; 
    var google_remarketing_only = false; 
    /* ]]> */ 
</script> 
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"> 
</script> 
<noscript> 
    <div style="display:inline;"> 
    <img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/969557266/?label=5zU4CJby_FoQkoqpzgM&amp;guid=ON&amp;script=0"/> 
    </div> 
</noscript> 
{% endblock %} 
+2

«Вот 140 строк кода. Она не работает. Может кто-нибудь помочь?» Что происходит? Можете ли вы дать нам текст сообщения об ошибке или примеры того, как вы пытались отладить это? –

+4

Прохождение в 'locals()' в шаблон? Шутки в сторону? – spectras

+2

Argh. Удалите все эти строки 'except: pass'. Исключения происходят по какой-то причине; улавливая их *, а затем удаляя их *, неизбежно приведет к катастрофе. –

ответ

2

Вы не прошли signup_form к шаблону.

return render_to_response(template_name, {'signup_form': signup_form}, context_instance=RequestContext(request)) 

Я понятия не имею, что делают местные жители().

Редактировать: Я просто видел местных жителей, которые являются встроенной функцией python. Будет лучше, если вы явно передадите переменные, которые вам нужны в шаблоне.

Редактировать 2: Убедитесь, что это правильное имя_файла. В шаблоне просто распечатайте и посмотрите на форму {{signup_form}}. Посмотрите, доступно ли это.

+0

он все еще не работал даже после того, как я сменил код –

+0

@YosuaKemichoZakaria, пожалуйста, измените 2 –

0

Вы не возвращаете форму. Попробуйте изменить последнюю строку целью

return render_to_response(template_name, locals(), context_instance=RequestContext(request, {'signup_form' : signup_form)) 
Смежные вопросы