Models:::::
from django.db import models
class Start(models.Model):
name = models.CharField(max_length=20,verbose_name='姓名')
age = models.IntegerField(verbose_name='年龄')
gender_choices = (
('男','男'),
('女','女')
)
gender = models.CharField(max_length=20,choices=gender_choices,verbose_name='性别')
num = models.IntegerField(verbose_name='数量')
m_id = models.ManyToManyField('Moive')
def __str__(self):
return self.name
class Moive(models.Model):
name = models.CharField(max_length=20,verbose_name='电影名')
picture =models.ImageField(upload_to='upload',max_length=255,verbose_name='图片')
date = models.DateField(auto_now_add=True,verbose_name='上映时间')
number = models.IntegerField(verbose_name='人数')
def __str__(self):
return self.name
# Create your models here.
views.py :::
from django.shortcuts import render,HttpResponse,redirect
import os
from test4 import settings
from movie import models
def add_movie(request):
# user_id = request.session.get('user_id') #取session
if request.method == 'GET':
return render(request, 'add_movie.html')
if request.method == 'POST':
name = request.POST.get('name')
picture = request.FILES.get('picture')
f = open(os.path.join(settings.UPLOAD_ROOT, '', picture.name), 'wb')
# 写文件 遍历图片文件流
for chunk in picture.chunks():
f.write(chunk)
# 关闭文件流
f.close()
if name and picture:
models.Moive.objects.create(name=name,picture=picture)
else:
return HttpResponse('不能有空值')
return redirect('/show_movie/')
def show_movie(request):
# user_id = request.session.get('user_id') #取session
movie = models.Moive.objects.all().order_by('date')
context = {
'moive' : movie
}
return render(request, 'show_movie.html', context)
def add_start(request):
if request.method == 'GET':
start = models.Start.objects.all()
movie = models.Moive.objects.all()
return render(request, 'add_start.html', locals())
if request.method == 'POST':
name = request.POST.get('name') # 输入名称
age = request.POST.get('age')
gender = request.POST.get('gender')
movie = request.POST.get('movie')
num = request.POST.get('num')
movies = models.Moive.objects.filter(id=movie).first()
if name and age and gender and movie and num: # 判断是否获取到三个值
creat_start = models.Start.objects.create(name=name, age=age, gender=gender, num=num)
# creat_start.Movie_set.add(movies)
creat_start.m_id.add(movies)
return redirect('/') # 返回
else: # 如果有空值
return HttpResponse('不能有空!')
def index(request):
# user_id = request.session.get('user_id') #取session
start = models.Start.objects.all().order_by('age')
return render(request,'index.html',locals())
def set(request):
start = models.Start.objects.all().order_by('-num')
return render(request,'set.html',locals())
def start_movie(request,id):
start = models.Start.objects.all().filter(id=id).first()
movies = start.m_id.all().order_by('date')
return render(request,'start_movie.html',locals())
# Create your views here
Html页面
add_movie
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
电影名称:<input type="text" name="name">
<br>
封面图片:<input type="file" name="picture">
<br>
<button type="submit">上传</button>
</form>
</body>
</html>
add_start页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
演员姓名:<input type="text" name="name">
<br>
演员年龄:<input type="text" name="age">
<br>
演员性别:<input name="gender" type="radio" value="男" checked="checked"/>男
<input name="gender" type="radio" value="女"/>女
<br>
参演电影:<select name="movie" id="">
{% for i in movie %}
<option value="{{ i.id }}">{{ i.name }}</option>
{% endfor %}
</select><br>
参演电影数量:<input type="text" name="num">
<br>
<button type="submit">提交</button>
</form>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<th>演员姓名</th>
<th>演员年龄</th>
<th>演员性别</th>
</tr>
{% for i in start %}
<tr>
<th>{{ i.name }}</th>
<th>{{ i.age }}</th>
<th>{{ i.gender }}</th>
</tr>
{% endfor %}
</table>
</body>
</html>
set页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>所有的演员</h1>
{% for i in start %}
<a href="/start/{{ i.id }}/"> {{ i.name }} </a>
{% endfor %}
</body>
</html>
show_movie
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页展示</title>
</head>
<body>
<table border="1">
<tr>
<td>电影名称</td>
<td>电影日期</td>
<td>展示图片</td>
</tr>
{% for x in moive %}
<tr>
<td>{{ x.name }}</td>
<td>{{ x.date }}</td>
<td><img src="/{{ x.picture }}" alt=""></td>
</tr>
{% endfor %}
</table>
</body>
</html>
start_movie
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{ start.name }}出演的电影:</h1>
{% for x in movies %}
{{ x.name }}
{% endfor %}
</body>
</html>