как отправить неанглийское слово (китайский) по электронной почте, используя django - PullRequest
2 голосов
/ 15 декабря 2010

если я использую тему китайского слова:

subject = u'邮件标题'

, будет отображаться ошибка:

UnicodeDecodeError at /account/login_view/

'utf8' codec can't decode bytes in position 0-1: invalid data

что я могу с этим сделать,

спасибо

обновлено

def register_view(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            # Process the data in form.cleaned_data
            # ...
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            email = form.cleaned_data['email']
            user = User.objects.create_user(username, email, password)

            send_html_mail(subject, html_content, [email])
            if user is not None:
                user.save()
                #return HttpResponse(simplejson.dumps({'msg':'ok'}))
                return HttpResponseRedirect("/")
            else:
                return HttpResponseRedirect("/account/register_view") 
    else:
        form = SignupForm() # An unbound form

    return render_to_response('accounts/register_view.html',{'form': form,})

def login_view(request): 
    if request.method == 'POST': 
        form = LoginForm(request.POST) 
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(username=username, password=password)  
            if user is not None:  
                if user.is_active:
                   login(request, user)
                   return HttpResponseRedirect("/")
                else:
                   return HttpResponse('user is not active')
            else:
                #return HttpResponseRedirect("/account/login_submit") 
                return HttpResponse('No this username . and <a href="/">return to homepage</a>')
    else:
        form = LoginForm() # An unbound form

    return render_to_response('accounts/login_view.html',{'form': form,})

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Как вы отправляете тему. Вы должны закодировать его в utf-8 перед отправкой.

subject.encode('utf-8')

или

import codecs
subject = codecs.utf_8_encode(subject)

А затем отправьте это на ваше усмотрение.

0 голосов
/ 15 декабря 2010

все в порядке:

я использую Блокнот программиста 2 до Encoding py и html файл с китайским словом.

alt text

...