я поставил абсолютно везде utf-8 кодировку это точно,видимо при выполнии фукнций,программа полчает данные из браузер в другой кодировке...Нужно видимо в функции как то декодировать еще вот скрины и кусок кода где ошибка
Отображает данные из базы на русском без проблем,если пытаюсь изменить и ввожу данные по-русски вылетает:
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
111. response = callback(request, callback_args, *callback_kwargs)
File "E:\project eclipse\djangoEventCal\src\djangoEventCal..\djangoEventCal\cal\views.py" in updEvent
92. p = getParams(request, default)
File "E:\project eclipse\djangoEventCal\src\djangoEventCal..\djangoEventCal\cal\views.py" in getParams
125. result[kl] = paramDefkl
Exception Type: UnicodeEncodeError at /cal/upd/
Exception Value: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
Код:
def updEvent(request):
"""update selected event to calendar"""
user = request.user
default = dict(month=1, year=1, day=1, rowid=1, name="", desc="", when="")
p = getParams(request, default)
year, month, day = p['year'], p['month'], p['day']
# create calendar obj
cal = CalendarController(user, day)
cal.load(year, month)
# parpare data for adding Event
whenDate = datetime.date(year, month, day)
whenTime = datetime.time(*map(int, p['when'].strip().split(':')))
when = datetime.datetime.combine(whenDate, whenTime)
# update Event
cal.updEvent(day, p['rowid'], unicode(p['name']).encode("UTF-8"), when, unicode(p['desc']).encode("UTF-8"))
# show view with new result
return redirect2view(request.path, year, month, day)
def getParams(request, default):
paramKeys = ['year', 'month', 'day', 'rowid', 'name', 'desc', 'when']
paramFunc = [int, int, int, int, str, str, str ]
paramDef = dict(zip(paramKeys, paramFunc))
inputDict = getattr(request, request.method, {})
result = copy.deepcopy(default)
for k in inputDict:
kl = k.lower()
if kl in default and kl in paramDef:
try:
result[kl] = paramDef[kl](getattr(request, request.method)[k])
except KeyError:
pass
return result
def redirect2view(url, year, month, day):
url = upOneLevelURL(url)
qstr = '?year=%d&month=%d&day=%d' % (year, month, day)
url += qstr
return HttpResponseRedirect(url)