Djangoテストの2つの方法


#coding=utf-8
import urllib
import urllib2

host_ip = 'localhost'
port = '8000'

def get_test_data_list(file_name):
        with open(file_name,'r') as read_file:
                return read_file.read().strip().split('
'
) def process_data_get_method(data): url_get_method ='http://%s:%s/dev/?sentence='%(host_ip,port) try: url_process = urllib2.urlopen(url_get_method+data).read() return url_process except urllib2.HTTPError, e: print 'error code:',e.code except urllib2.URLError, e: print str(e) def process_data_post_method(data): url_post_method ='http://%s:%s/dev/'%(host_ip,port) values = {'sentence' :data} data = urllib.urlencode(values) req = urllib2.Request(url_post_method, data) response = urllib2.urlopen(req) the_page = response.read() return the_page if __name__== '__main__': print process_data_get_method(' app') print process_data_post_method(' app')

テストで次のエラーが検出されました.
RuntimeError: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to localhost:8000/dev/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

postのメソッドでは、urlエラー:エラーurl:http://%s:%s/dev正しいurl:http://%s:%s/dev/はurlの一番後ろに反スラッシュが1つ足りないことがわかりました.修正が完了したpostメソッドには、次のエラーが続きます.`
django.security.csrf - WARNING - Forbidden (CSRF cookie not set.): /dev/
[25/May/2018 02:38:38] "POST /dev/ HTTP/1.1" 403 2857

アクセスエラーを拒否すると、CSRFというコントロールがブロックされていることがわかります.Djangoでのsetting.pyで:`
'django.middleware.csrf.CsrfViewMiddleware'
を見つけて、この行を注釈すればいいです.