尝试使用Django
我想尝试使用Django。
1. Django初级入门
– 我认为Django Girls教程非常易懂且很好。
– 在上述教程的Django安装页面上,使用pip install django==1.11来安装Django版本1.11,但是最新的Django版本2.0更方便(例如,在后面的URL指定中,可以使用path来代替了超难懂且著名的正则表达式(REGEX)),因此我认为最好是使用pip install django而不特别指定版本(不指定版本将安装最新版本)来安装Django。
2. Django Girls样例的变动
- 一部、django2.0ではエラーになる部分があるので読み替えます
TypeError: __init__() missing 1 required positional argument: 'on_delete'
在实例化成为后,就需要在models.py的ForeignKey上添加参数on_delete=models.CASCADE。
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
- また、Deploy!のページは、作成したdjangoをサーバー(このサンプルではHeroku)での実行を意図した内容なので、ローカル端末でのdjango稼働で十分でとくにサーバーでの稼働を(今のところ)必要としないかたはこのページは実施しなくてもかまいません
2. 我们将提供能够发送图片文件的功能。
- 上記のdjango girlsのサンプルを下記へ変更し画像ファイルの送付を可能にします
{% extends 'blog/base.html' %}
{% block content %}
<h1>New post</h1>
<form method="POST" class="post-form" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<input type="file" name="file" accept="image/jpeg, image/png, image/bmp" onchange="this.form.filename.value = this.files[0].name" required />
ファイル
<input type="text" name="filename" class="form-control" placeholder="ファイルを選択してください" readonly>
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
import os
# from django.conf import settings
from django.shortcuts import render, get_object_or_404, redirect
from django.utils import timezone
from .models import Post
from .forms import PostForm
UPLOAD_DIR = 'static/uploads/'
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
file = request.FILES['file']
path = os.path.join(UPLOAD_DIR, file.name)
destination = open(path, 'wb')
for chunk in file.chunks():
destination.write(chunk)
destination.close()
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect(post_detail, pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect(post_detail, pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
请提供相关信息。
-
- Django女生教程
-
- django教程
- 使用Django REST框架快速实现API