django1.8.3错误案例及解决方法

1、找不到模板,即使在setting.py添加了TEMPLATE_DIRS选项,也重启了django.最终还是报无法找到模板。如图:

wKiom1WnydGxuuxsAACAo9qTJFE809.jpg

解决方法:

注释掉setting.py文件里django系统自动生成的 TEMPLATES,然后再重启django. 就可以正常访问了。

wKioL1WnzDegbdEhAAFMvVRuh8I967.jpg


2、错误:CSRF verification failed. Request aborted.如图

wKioL1Wn2TPw0D9DAAJbex2egcY477.jpg

解决办法:

1、在表单里添加{%csrf_token%}

<form action="/books/contact/" method="post">
                {% csrf_token %}      <--------------------------------------新加入的                  
                <p>Subject: <input type="text" name="subject"></p>
                <p>Your e-mail: (optional): <input type="text" name="email"></p>
                <p>Message: <textarea name="message" rows="10" cols="50"></textarea></p>
                <input type="submit" value="Submit">
</form>

还需要最后一步在view文件中加入装饰器@csrf_exempt如下:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def contact(request):
    ........

问题解决。

因为django之所以引进CSRF是为了避免 Cross Site Request Forgeries 攻击,而上面的解决方法恰好禁止掉这个django的功能。

3、

CommandError: App 'books' has migrations. Only the sqlmigrate and sqlflush commands can be used when an app has migrations.

这句话的意思是App 'books'被改动了,只能使用sqlmigrate和sqlflush命令,而不能新建数据表。

解决方法:删除app对应文件夹下的migrations子文件夹即可。

4、

Ajax对Django Post请求出错(500,403)

解决方法:

1、在view.py文件加导入模块 

from django.views.decorators.csrf import csrf_exempt

2、然后在函数前加入 @csrf_exempt

3、在Ajax请求的url路径里必须以"/"结束,否则报错。譬如:

$.ajax({

 type:'POST',

 url:'/add/',

 data:{

   url:"123",

 },

                                


你可能感兴趣的:(django1.8.3错误案例及解决方法)