django - не удалось разобрать остаток: «-mail» из «электронной почты» - PullRequest
0 голосов
/ 23 января 2011

Я следовал Полному руководству по Джанго (v2)

Вот трассировка, если вы хотите посмотреть http://dpaste.com/344698/

Это дает мне эту ошибку:

TemplateSyntaxError at /contact/

Could not parse the remainder: '-mail' from 'e-mail'
Template error

In template /home/jwxie/django-dev/mysite/contact/template/contact_form.html, error at line 5
and line 5 is {% block content %}

Код, который я имел в views.py

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from django.core.mail import send_mail

def contact(request):
    display_error = []
    if request.method == 'POST':
        if not request.POST.get('subject',''):
            display_error.append('Enter a subject')
        if not request.POST.get('message',''):
            display_error.append('Enter a message')
        if not request.POST.get('e-mail') and '@' not in request.POST['e-mail']:
            display_error.append('Enter a valid e-mail address')
        if not display_error:
            send_mail(
                      request.POST['subject'],
                      request.POST['message'],
                      request.POST.get('e-mail','noreply@example.com'),
                      ['siteowner@example.com'],
            )
            return HttpResponseRedirect('/contact/thanks/')
    return render_to_response('contact_form.html',{
                'subject': request.POST.get('subject',''), 
                'message': request.POST.get('message',''), 
                'e-mail': request.POST.get('e-mail',''),
                'display_error': display_error,
                })

def contact_thanks(request):
    return HttpResponse('Thanks')

Это код в contact_form.html

{% extends "base.html" %}

{% block title %} Contact {% endblock %}
{% block content %} 
{% block content-h1 %}<p>Feel free to contact us!</p> {% endblock %}

<form action="/contact/" method="post">
<p>Subject: <input type="text" name="subject" value="{{ subject }}"></p>
<p>Your e-mail (optional): <input type="text" name="e-mail" value="{{ e-mail }}"> </p>
<p>Message: <textarea name="message" rows="10" cols="50">{{ message }}</textarea></p>
<input type="submit" value="Submit">
</form>

{% if display_error %}
<ul>
{% for error in display_error %}
<li>{{error}}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}

У меня был контакт как приложение, структура выглядит так: mysite / contact, и у него есть собственный шаблон. Я уверен, что setting.py правильный ...

что вы, ребята, думаете? любая помощь приветствуется. Я просто играю с примером кода.

1 Ответ

2 голосов
/ 23 января 2011

Почему вы пишете "электронная почта"? Разве переменные шаблона не должны быть именами переменных Python? "E_mail"?

http://docs.djangoproject.com/en/dev/topics/templates/#variables

Там написано

Имена переменных состоят из любых комбинация буквенно-цифровых символов и подчеркивание ("_").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...