まず第一に、私はここに来てよかったです。最近あなたのことを読み、ここで役立つ答えを見つけました。
これは私の最初の投稿ですので、親切に教えてください、私はプログラミングの初心者です。
だから、私はDjangoで最初のWebアプリケーションを書いています.todoアプリですが、これを行う関数を書く方法がわかりません。Django ドキュメントやその他の関連するディスカッションで何かを見つけましたが、機能しません。
これが私のコードです:
#models.py
class Task(models.Model):
user = models.ForeignKey(User)
task = models.CharField(max_length=200)
initialized_at = models.DateTimeField(auto_now_add=True)
due_date = models.DateField(default=datetime.now)
done = models.BooleanField(default=False)
def __unicode__(self):
return self.task
#views.py
def edit_task(request, id):
if request.method == 'POST':
task_to_edit = Task.objects.get(pk=task_id)
form = TaskForm(request.POST, instance=task_to_edit)
form.save()
if form.is_valid():
task_to_edit = form.save()
return HttpResponseRedirect('/')
else:
form = TaskForm()
return render(request, 'todo/edit_task.html', {'form': form})
#urls.py
url(r'^edit_task/(?P<task_id>\w+)/$', 'todo.views.edit_task')
#edit_task.html
{% block content %}
<form action="/edit_task/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock content %}
更新されたフォームを送信すると、次のエラーが表示されます。
Page not found (404)
Request Method: POST
Request URL: hxxp://127.0.0.1:8000/edit_task/
jbz.urls で定義された URLconf を使用して、Django は次の URL パターンを次の順序で試しました。
^admin/
^$ [name='index']
^(?P<task_id>\d+)/$
^(?P<task_id>\d+)/$
^add-task/$
^delete-task/(?P<task_id>\w+)/$
^edit_task/(?P<id>\w+)/$
^done/(?P<task_id>\d*)/$
現在の URL はedit_task/
、これらのいずれとも一致しませんでした。
ルート urls.py は次のようになります。
url(r'', include('todo.urls'))