慕课网-Django入门到进阶-更适合Python小白的系统课程-第4章Django中的ORM和数据库-4-10本章练习:消息的插入与查询
第4章 Django 中的 ORM 和数据库
4-10 本章练习:消息的插入与查询
1.在项目 message_test 下目录 app,修改文件 views.py
import time
from django.views.generic import View
from django.shortcuts import render, redirect, reverse
#from django.http import HttpResponse
from .models import Message
from .consts import MessageType
class LessionThree(View):
TEMPLATE = 'three.html'
def get(self, request, message_type):
data = {}
try:
message_type_obj = MessageType[message_type]
except Exception as e:
data['error'] = '没有这个消息类型 {}'.format(e)
return render(request, self.TEMPLATE, data)
message = request.GET.get('message', '')
if not message:
data['error'] = '消息不可为空'
return render(request, self.TEMPLATE, data)
data['message'] = message
data['message_type'] = message_type_obj
return render(request, self.TEMPLATE, data)
class LessionFourPageOne(View):
TEMPLATE = 'four_page_one.html'
def get(self, request, message_type):
data = {}
try:
message_type_obj = MessageType[message_type]
except Exception as e:
data['error'] = '没有这个消息类型 {}'.format(e)
return render(request, self.TEMPLATE, data)
message = request.GET.get('message', '')
if not message:
data['error'] = '消息不可为空'
return render(request, self.TEMPLATE, data)
Message.objects.create(
content=message,
message_type=message_type_obj.value,
created_time=time.time()
)
return redirect(reverse('fourpagetwo'))
class LessionFourPageTwo(View):
TEMPLATE = 'four_page_two.html'
def get(self, request):
return render(request, self.TEMPLATE)
2.在项目 message_test 下目录 message_test,修改文件 urls.py
from django.urls import path
from .views import LessionThree, LessionFourPageOne, LessionFourPageTwo
urlpatterns = [
path('three/<str:message_type>', LessionThree.as_view(), name='three'),
path('fourPageOne/<str:message_type>', LessionFourPageOne.as_view()),
path('fourPageTwo', LessionFourPageTwo.as_view(), name='fourpagetwo'),
]
3.在项目 message_test 下目录 templates,添加文件 four_page_one.html 和 our_page_two.html
4.在项目 message_test 下目录 templates,修改文件 four_page_one.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{error}}
</body>
</html>
5.在命令行窗口进入目录 message_test,运行命令启动服务,在数据表 app_message 中添加数据,添加数据后直接跳转到文件 fourPageTwo.html
python manage.py runserver 127.0.0.1:8000



6.在命令行窗口进入 mysql 界面查看

7.在项目 message_test 下目录 app,修改文件 views.py,修改类 LessionFourPageTwo
import time
from django.views.generic import View
from django.shortcuts import render, redirect, reverse
#from django.http import HttpResponse
from .models import Message
from .consts import MessageType
class LessionThree(View):
TEMPLATE = 'three.html'
def get(self, request, message_type):
data = {}
try:
message_type_obj = MessageType[message_type]
except Exception as e:
data['error'] = '没有这个消息类型 {}'.format(e)
return render(request, self.TEMPLATE, data)
message = request.GET.get('message', '')
if not message:
data['error'] = '消息不可为空'
return render(request, self.TEMPLATE, data)
data['message'] = message
data['message_type'] = message_type_obj
return render(request, self.TEMPLATE, data)
class LessionFourPageOne(View):
TEMPLATE = 'four_page_one.html'
def get(self, request, message_type):
data = {}
try:
message_type_obj = MessageType[message_type]
except Exception as e:
data['error'] = '没有这个消息类型 {}'.format(e)
return render(request, self.TEMPLATE, data)
message = request.GET.get('message', '')
if not message:
data['error'] = '消息不可为空'
return render(request, self.TEMPLATE, data)
Message.objects.create(
content=message,
message_type=message_type_obj.value,
created_time=time.time()
)
return redirect(reverse('fourpagetwo'))
class LessionFourPageTwo(View):
TEMPLATE = 'four_page_two.html'
def get(self, request):
data ={}
messages = Message.objects.all()
data['messages'] = messages
return render(request, self.TEMPLATE, data)
8.在项目 message_test 下目录 templates,修改文件 four_page_two.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for message in messages %}
<li>{{message.content}}</li>
{% endfor%}
</ul>
</body>
</html>
9.测试

10.在项目 message_test 下目录 app,修改文件 models.py
# coding:utf-8
from django.db import models
from .consts import MessageType
class Message(models.Model):
content = models.TextField()
message_type = models.CharField(max_length=10, db_index=True)
created_time = models.IntegerField(default=0)
def __str__(self):
return 'type:{}, content:{}'.format(self.message_type, self.content)
@property
def message_typ(self):
try:
return MessageType[self.message_type]
except:
return MessageType.info
11.在项目 message_test 下目录 templates,修改文件 four_page_two.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for message in messages %}
<li style="color:{{message.message_typ.color}}">{{message.content}}</li>
{% endfor%}
</ul>
</body>
</html>
12.测试

13.在项目 message_test 下目录 app,修改文件 models.py
from .models import Message
from .consts import MessageType
class LessionThree(View):
TEMPLATE = 'three.html'
def get(self, request, message_type):
data = {}
try:
message_type_obj = MessageType[message_type]
except Exception as e:
data['error'] = '没有这个消息类型 {}'.format(e)
return render(request, self.TEMPLATE, data)
message = request.GET.get('message', '')
if not message:
data['error'] = '消息不可为空'
return render(request, self.TEMPLATE, data)
data['message'] = message
data['message_type'] = message_type_obj
return render(request, self.TEMPLATE, data)
class LessionFourPageOne(View):
TEMPLATE = 'four_page_one.html'
def get(self, request, message_type):
data = {}
try:
message_type_obj = MessageType[message_type]
except Exception as e:
data['error'] = '没有这个消息类型 {}'.format(e)
return render(request, self.TEMPLATE, data)
message = request.GET.get('message', '')
if not message:
data['error'] = '消息不可为空'
return render(request, self.TEMPLATE, data)
Message.objects.create(
content=message,
message_type=message_type_obj.value,
created_time=time.time()
)
return redirect(reverse('fourpagetwo'))
class LessionFourPageTwo(View):
TEMPLATE = 'four_page_two.html'
def get(self, request):
data ={}
search = request.GET.get('search', '')
if search:
messages = Message.objects.filter(content__contains=search)
else:
messages = Message.objects.all()
data['messages'] = messages
return render(request, self.TEMPLATE, data)
14.在项目 message_test 下目录 templates,修改文件 four_page_two.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for message in messages %}
<li style="color:{{message.message_typ.color}}">
{{message.content}}
{{message.created_time}}
</li>
{% endfor%}
</ul>
</body>
</html>
15.测试







posted on 2020-02-03 09:31 herisson_pan 阅读(7) 评论(0) 收藏 举报
浙公网安备 33010602011771号