Rozwiązywanie problemów

Ta strona zawiera porady dotyczące często występujących błędów i problemów podczas rozwijania aplikacji w Django.

Problemy z uruchomieniem django-admin

“polecenie nie zostało znalezione: django-admin

django-admin powinno być na twojej ścieżce systemowej, jeśli zainstalowałeś Django przez python setup.py. Jeśli nie ma go na twojej ścieżce, możesz znaleźć je w site-packages/django/bin, gdzie site-packages jest katalogiem wewnątrz twojej instalacji Pythona. Rozważ stworzenie dowiązania symbolicznego do django-admin z jakiegoś miejsca na twojej ścieżce, takiego jak /usr/local/bin.

Jeśli django-admin nie działa a django-admin.py działa, prawdopodobnie używasz wersji Django, która nie jest zgodna z wersją tej dokumentacji. django-admin zostało wprowadzone w Django 1.7.

Uprawnienia Mac OS X

Jeśli używasz Mac OS X, możesz widzieć wiadomość „permission denied” próbując uruchomić django-admin. To dlatego, że w systemach uniksowych takich jak OS X, plik musi być oznaczony jako „wykonywalny” zanim będzie mógł być uruchamiany jako program. Aby to zrobić otwórz Terminal.app i wejdź (używając komendy cd) do katalogu, gdzie jest zainstalowane django-admin, następnie uruchom komendę sudo chmod +x django-admin.

Rozmaite

Otrzymuję UnicodeDecodeError. Co robię źle?

Ta klasa błędów występuje, gdy ciąg bitów zawierający sekwencje spoza ASCII jest przekształcany w ciąg znaków Unicode i wskazane kodowanie jest niepoprawne. Wyjście zazwyczaj wygląda w ten sposób:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position ?:
ordinal not in range(128)

Rozwiązanie przede wszystkim zależy od kontekstu, jednakże są dwie pułapki powszechnie powodujące ten błąd:

  • Your system locale may be a default ASCII locale, like the “C” locale on UNIX-like systems (can be checked by the locale command). If it’s the case, please refer to your system documentation to learn how you can change this to a UTF-8 locale.

  • You created raw bytestrings, which is easy to do on Python 2:

    my_string = 'café'
    

    Either use the u'' prefix or even better, add the from __future__ import unicode_literals line at the top of your file so that your code will be compatible with Python 3.2 which doesn’t support the u'' prefix.

Powiązane zasoby:

Back to Top