ホームページ >バックエンド開発 >Python チュートリアル >Django の一般的なエラーに対する解決策の概要
1. テンプレート タイプ エラー:
エラーの原因: return:
class UserProfile(models.Model):
がモデルにありません user=models.OneToOneField(User,blank=True,null=True , relationship_name='user',verbose_name=_(u'user'))
company_name=models.CharField(u'会社 (またはエージェント) 名',max_length=30,default='unknown') #会社名
製品=models.ForeignKey(Product,blank=True,null=True,verbose_name=_(u'product')) #Product
class Meta:
verbose_name_plural = _(u'User Configuration')
def __unicode__(self ):
[ここ]_(u'%(user_name)s') % {'user_name':self.user.username}
ここに return を追加 以上です。
2. URL関連のエラー
、スタイルが生成できないなど、静的ファイルにアクセスできない
1時間以上格闘した結果、判明。 urlpatterns は次のように記述されます:
urlpatterns = pattern('',
(r'^ $','login.msg.index'), #首页
)
#ログイン登録
urlpatterns = pattern('',
(r'^accounts/register/$','login.msg.register_page'), #Register
(r'^accounts/login/$','login.msg. login')、#Login
( r'^accounts/logout/$','django.contrib.auth.views.logout',{'next_page':'/'})、#Django は専用のログアウト フォーム機能を提供しますlogout
(r' ^accounts/register/success/$','django.views.generic.simple.direct_to_template',{'template':'registration/register_success.html'}), #登録が成功しました
)
#admin backend
urlpatterns += pattern('',
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin) を管理する/', include(admin .site.urls)),
)
#静的ファイルアクセス
urlpatterns += pattern('',
) (r'^site_media/(?P
.*)$' , 'django.views.static.serve', {'document_root': settings.MEDIA_SITE}),また、[ログイン登録] URL の後に += ではなく = を書いたため、URL が上書きされ、静的ファイルを読み込むことができなくなりました。ホームページが開かなくなります。
3. コーディング エラー
、エラーの種類は次のとおりです:
DjangoUnicodeDecodeError at /admin/books/book/
'ascii' コーデックは位置 0 のバイト 0xe8 をデコードできません: 序数範囲 (128) にありません。
()
を渡しました。 解決策:
Python2 の str データ型と unicode データ型を混同しました。
(0)、必要なのは、ascii
(1) の代わりに実際のエンコーディングを使用することです。str->unicode を必要とするコードの場合は、
import と書くことができます。フロント sys
reload(sys)
sys.setdefaultencoding('utf8')
str エンコーディングを ascii から utf8 (または gb18030) に変更します
(2)、python3 Unicode str と byte 配列を区別し、デフォルトのエンコーディングは ascii ではなくなりました
参考: http://vososo.com/vo/558
4. その他のエラー
、Django POST リクエスト エラー禁止 (403) CSRF 検証が失敗しました。リクエストは中止されました
settings.py に
MIDDLEWARE_CLASSES を追加して、OK
重要なポイントの参照: http://blog.csdn.net/feng88724/ Article/details/7221449
セッションを使用すると、上記と同じエラーが発生します:を使用する場合、login:login() は引数を 1 つだけ受け取ります (2 つ指定されます)
これは、関数を表示するためにログインするときに特に一般的です。理由は、ログイン関数とログインモジュールの名前が競合しているためです。たとえば、ログイン URL は次のように記述されています。
(r '^account/login/$'、 'login')、= "post":r try:
username= request.post.get( 'username')
password = request.get.get( 'パスワード')
user.is_active の場合:
Login (Request, User)
RTURN HTTPRESPONSE ('OK')
ELSE:
RTURN HTTPRESPONSE t例外 , E: o Log.error ("Login: % S" % STR (E))
Return Render_to_Response ('Account/login.html')
もちろんdjangoから。 contrib.auth import 認証、ログイン
これは、ログインが 2 つあるため、上記の問題につながるため、解決策は 2 つあり、ログイン ビュー関数の名前と対応する URL を変更します。 webLogin
など、インポート設定: from ..login as _login これもOKです、忘れずに変更してください。
、ジャンプできない例えば、ログインしたい。上記のように、ログインに成功したらホームページに移動します。 上記のコードを次のように書き換えます
....
if user.is_active:
上記のコードを次のように書き換えます
pResponseRedirect( '/' )....
しかし、次のようにジャンプは実装されていません:
//登录 function _submit(){ var username = $("input[name='username']").val(); var password = $("input[name='password']").val(); if (username == ""){ art.dialog({content: '用户名不能为空',time :1.5}); }else if(password == ""){ art.dialog({content: '密码不能为空',time :1.5}); }else{ $.post('/account/login/',{'username':username,'password':password},function(data){ if (data =='error'){ art.dialog({content: '用户名或密码错误',time :1.5}); } }); } }