質問するログイン新規登録

質問編集履歴

8

解決方法に関して追記

2017/09/07 09:48

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -185,4 +185,12 @@
185
185
  ```
186
186
  models.pyにてpyという変数を定義し、
187
187
  views.pyのpost, _ = Post.objects.get_or_create(pk=line[0])の箇所を修正することで、
188
- 上記のエラーは解消できるでしょうか。
188
+ 上記のエラーは解消できるでしょうか。
189
+
190
+ __________________________________________________________
191
+ 【追記②】
192
+ kacchan822様にご回答いただいたとおりにviewとmodelを修正し、
193
+ can110様にご指摘いただいたとおりにファイルの文字コードを「utf-8」へと変更した所、
194
+ 無事にファイルをインポートすることができるようになりました!
195
+
196
+ コメント欄、回答欄にて適切なご指摘を下さり誠にありがとうございました。

7

views\.pyの修正を行ったので追記

2017/09/07 09:48

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -145,4 +145,44 @@
145
145
  int関数を指定しておらず、どこを変更すればcsvファイルにて日本語を読み込めるのか、分からない状態です。
146
146
 
147
147
  pythonもdjangoも初心者のため、不足している情報等ありましたら申し訳ございません。
148
- どうぞ宜しくお願い致します。
148
+ どうぞ宜しくお願い致します。
149
+ __________________________________________________________
150
+ 【追記】
151
+ 回答欄にてご指摘いただき、以下の修正を行いました。
152
+
153
+ ①views.pyの関数の文字コードをutf_8_sigに指定
154
+ ```python
155
+ def csv_import(request):
156
+ form_data = TextIOWrapper(
157
+ #文字コードをutf_8_sigに指定
158
+ request.FILES['csv'].file, encoding='utf_8_sig')
159
+ if form_data:
160
+ csv_file = csv.reader(form_data)
161
+ for line in csv_file:
162
+ post, _ = Post.objects.get_or_create(pk=line[0])
163
+ post.title = line[1]
164
+ post.text = line[2]
165
+ category, _ = Category.objects.get_or_create(name=line[3])
166
+ post.category = category
167
+ post.save()
168
+ ```
169
+ ②models.py上の不要な変更点を元に戻す
170
+ ※試したこと の項目の、②の変更点を変更前(冒頭に貼ったmodels.pyのコードの状態)に戻しました
171
+
172
+ 再度ファイルをアップロードしてみた所、
173
+ 以下のエラーが発生いたしました。
174
+
175
+ 'utf-8' codec can't decode byte 0x82 in position 27: invalid start byte
176
+
177
+ csvファイル冒頭の「ID」の部分に日本語の入力をしているのがおかしいのかと考え、
178
+ 「ID」は数字、ほかは日本語の状態にしアップロードしましたが、エラー内容は変わりませんでした。
179
+
180
+ ```インポートしたcsvファイル②
181
+ 1 2 3 4
182
+ 3 4 5 6
183
+ 4 2 3 4
184
+ 5 あ い う
185
+ ```
186
+ models.pyにてpyという変数を定義し、
187
+ views.pyのpost, _ = Post.objects.get_or_create(pk=line[0])の箇所を修正することで、
188
+ 上記のエラーは解消できるでしょうか。

6

csvファイルの内容を追記

2017/09/07 09:14

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -91,6 +91,16 @@
91
91
  def __str__(self):
92
92
  return self.title
93
93
  ```
94
+
95
+
96
+ ③CSVファイルの内容
97
+ ```csv
98
+ 1 2 3 4
99
+ 3 4 5 6
100
+ 4 2 3 4
101
+ あ い う え
102
+
103
+ ```
94
104
  __________________________________________________________
95
105
 
96
106
 

5

書式の改善

2017/09/07 08:52

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
  以下のサイトを参照に、djangoにてcsvアップローダーを作成しました。
8
8
  __________________________________________________________
9
9
  【参照サイト】
10
- https://torina.top/detail/324/
10
+ [https://torina.top/detail/324/](https://torina.top/detail/324/)
11
11
  __________________________________________________________
12
12
 
13
13
  日本語にて記載されたcsvをインポートできるようにしたいのですが、
@@ -26,6 +26,7 @@
26
26
 
27
27
  ①views.py
28
28
  ___________________________
29
+ ```python
29
30
  import csv
30
31
  from io import TextIOWrapper, StringIO
31
32
  from django.http import HttpResponse
@@ -64,9 +65,11 @@
64
65
  memory_file.getvalue(), content_type='text/csv')
65
66
  response['Content-Disposition'] = 'attachment; filename=db.csv'
66
67
  return response
68
+ ```
67
69
  __________________________________________________________
68
70
 
69
71
  ②models.py
72
+ ```python
70
73
  from datetime import datetime
71
74
  from django.db import models
72
75
 
@@ -87,13 +90,14 @@
87
90
 
88
91
  def __str__(self):
89
92
  return self.title
93
+ ```
90
94
  __________________________________________________________
91
95
 
92
96
 
93
97
  ###試したこと
94
98
  ①以下のサイトを参考に、views.pyを変更
95
99
  【参考にしたサイト】
96
- http://qiita.com/niwaringo/items/d2a30e04e08da8eaa643
100
+ [http://qiita.com/niwaringo/items/d2a30e04e08da8eaa643](http://qiita.com/niwaringo/items/d2a30e04e08da8eaa643)
97
101
 
98
102
  【書き換え内容】
99
103
  書き換えた関数:csv_import
@@ -103,8 +107,8 @@
103
107
 
104
108
  ②以下のサイトを参考に、models.pyを変更
105
109
  【参考にしたサイト】
106
- http://docs.djangoproject.jp/en/latest/ref/unicode.html
110
+ [http://docs.djangoproject.jp/en/latest/ref/unicode.html](http://docs.djangoproject.jp/en/latest/ref/unicode.html)
107
- http://www.metareal.org/2008/04/11/django-unicode-encode-error/
111
+ [http://www.metareal.org/2008/04/11/django-unicode-encode-error/](http://www.metareal.org/2008/04/11/django-unicode-encode-error/)
108
112
 
109
113
  【書き換え内容】
110
114
  書き換えたクラス:Category

4

初心者アイコンを追加

2017/09/07 08:35

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
File without changes

3

誤字の修正

2017/09/07 06:46

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,6 @@
1
1
  ###前提・実現したいこと
2
2
 
3
+ 実現したいこと:djangoにて、日本語で記入されたcsvをインポートできるようにしたい
3
4
  使用言語:python3.6
4
5
  フレームワーク:「Django1.11」
5
6
 
@@ -9,14 +10,20 @@
9
10
  https://torina.top/detail/324/
10
11
  __________________________________________________________
11
12
 
13
+ 日本語にて記載されたcsvをインポートできるようにしたいのですが、
12
- csvに「あいうえお」と入力しインポートした所、以下のエラーが発生しました。
14
+ 試しにcsvに「あいうえお」と入力しインポートした所、以下のエラーが発生してしいました。
13
15
 
14
16
  ValueError at /import/csv_import/
15
17
  invalid literal for int() with base 10: 'あ'
16
18
 
19
+ こちらのバグを修正し、日本語のcsvをインポートできるようにするためには、
20
+ どこを修正したら良いでしょうか。
21
+
17
22
  ###該当のソースコード
18
23
  __________________________________________________________
19
24
 
25
+ 以下に、views.pyとmodels.pyのソースコードを記載いたします。
26
+
20
27
  ①views.py
21
28
  ___________________________
22
29
  import csv

2

誤字を修正しました

2017/09/07 06:04

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  ###前提・実現したいこと
2
- ここに質問したいことを詳細に書いてください
2
+
3
3
  使用言語:python3.6
4
4
  フレームワーク:「Django1.11」
5
5
 

1

使用しているDjangoのバージョンが「1,」と表示されてしまっていたので修正しました

2017/09/07 06:01

投稿

komatsuna
komatsuna

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ###前提・実現したいこと
2
2
  ここに質問したいことを詳細に書いてください
3
3
  使用言語:python3.6
4
- フレームワーク:Django1.11
4
+ フレームワーク:Django1.11
5
5
 
6
6
  以下のサイトを参照に、djangoにてcsvアップローダーを作成しました。
7
7
  __________________________________________________________