Yerel ayarlarla çalışırken Django kabuğu (en azından benim için) beklenmedik şekilde davranır. Virgülle ayrılmış bir ondalık alanın form doğrulaması, harici komut dosyasından arama yaparken çalışır ve django kabuğu (ipython) çağrısında başarısız olur.python django kabuğu (ipython) beklenmedik davranış veya hata?
aşağıdaki dosyaları var yeni Projesi Başlangıç:
local_forms/
├── local_forms
│ ├── __init__.py
│ ├── models.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── my_form.py
├── test_form.py
local_forms/models.py:
from django.db import models
class MyModel(models.Model):
val=models.DecimalField("value",max_digits=11,decimal_places=2)
my_form.py
from django import forms
from django.conf import settings
from local_forms.models import MyModel
class MyForm(forms.ModelForm):
val = forms.DecimalField(localize=True)
def __init__(self,*args,**kwargs):
super(MyForm,self).__init__(*args,**kwargs)
self.fields['val'].localize=True
if __debug__:
print self.fields['val'].localize
print ("Separator: "+settings.DECIMAL_SEPARATOR)
print ("Language: " +settings.LANGUAGE_CODE)
class Meta:
model=MyModel
test_form.py:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_forms.settings")
import my_form
form=my_form.MyForm({'val':'0,2'})
print ("Is bound: %s" % form.is_bound)
print ("Form valid %s" % form.is_valid())
print("Errors in val: %s" % form['val'].errors)
012 Django kabuğunda aynı şeyi yapmak
./test_form.py
True
Separator: .
Language: de-de
Is bound: True
Form valid True
Errors in val:
:
çağrılması ./test_form.py verimleri piton
In [1]: import my_form as mf
In [2]: form=mf.MyForm({'val':'0,2'})
True
Separator: .
Language: de-de
In [3]: form.is_valid()
Out[3]: False
In [4]: form['val'].errors
Out[4]: [u'Enter a number.']
Özetle kabuk manage.py i Django kabuğunu başlatırsanız (benim pc üzerinde ipython kullanır) locale bir şekilde çalışmıyor. Bir betikte tam olarak aynı şeyi yapmak mükemmel çalışır. Bu davranışı açıklayabilir misiniz?
Bpython yorumlayıcısı ile test edildi ve aynı hatayı aldı. Belki bazı ayarlar içe aktarılmıyor ya da bazı yollar yüklenmiyor. –