时间:2020.4.18-2020.4.25
1.用Django搭建一个简单的论坛
models
论坛板块Plate
class Plate(models.Model):
'''论坛的板块'''
text=models.CharField(max_length=200)
date_added=models.DateTimeField(auto_now_add=True)
owner=models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
'''返回模型的字符串表示'''
return self.text
text储存板块名称,date_added储存编辑日期,owner板块对应的版主
文章Post
class Post(models.Model):
'''用户发表的帖子'''
plate=models.ForeignKey(Plate,on_delete=models.CASCADE)
text=models.TextField()
date_added=models.DateTimeField(auto_now_add=True)
owner=models.ForeignKey(User,on_delete=models.CASCADE)
class Meta:
verbose_name_plural='posts'
def __str__(self):
'''返回模型的字符串表示'''
return self.text[:50]+"..."
变量的内容差不太多,plate储存该帖子对应的板块
评论Comment
class Comment(models.Model):
'''对于某条帖子的评论'''
post=models.ForeignKey(Post,on_delete=models.CASCADE)
text=models.TextField()
owner=models.ForeignKey(User,on_delete=models.CASCADE)
date_added=models.DateTimeField(auto_now_add=True)
def __str__(self):
'''返回模型的字符串表示'''
return self.text
储存的内容与之前差不多,post变量储存了该条评论是对应的哪个文章
views
这里就不列出每一个视图函数的具体细节了,需要的话可以到GitHub上查看完整代码
def index(request):
'''论坛的主页'''
def plates(request):
'''显示论坛所有板块'''
def plate(request,plate_id):
'''显示某板块内的所有po文'''
def new_plate(request):
'''添加新板块'''
def new_post(request,plate_id):
'''在特定的板块中添加新文章'''
def show_comments(request,post_id):
'''评论页面,显示某文章的所有评论,添加评论,回复'''
def new_comment(request,post_id):
'''添加评论'''
def response_comment(request,comment_id):
'''回复评论'''
def show_dynamic(request):
'''显示动态'''
def del_comment(request,comment_id):
'''删除一条评论'''
def del_post(request,post_id):
'''删除一条日志'''
效果
2.查询股票价格
扩展
所有数据获取,数据处理等功能我都放在了名为extends的外部模块中
get_price.py为视图函数提供调用接口,通过调用data模块中的stock_basic.py模块从API获得股票的价格数据,然后返回给视图函数将查询结果返回给用户。stock_basic.py由L同学完成设计和编写。
get_price.py
class GetPrice():
def __init__(self):
self.token='c89761557a8c339b857a2fedebea03685aee396dd2501d063d7271fd'
ts.set_token(self.token)
self.pro = ts.pro_api(self.token)
def by_name(self,stock_name,date):
stock=select_basic_name(stock_name,self.pro)
return stock.get_price(date,date,self.pro)
定义了查询类GetPrice,首先初始化API的调用配置,然后获取以dataframe的形式获取股票价格数据,by_name()方法是按照股票名称查询的功能函数,把从API获得的数据以及股票名作为参数传入/data/stock_basic.py中的select_basic_name函数,返回一个stock对象,其中包含了价格信息。
查询价格的视图函数
@login_required
def get_stock_price(request):
'''查询股票价格'''
result=''
if request.method!='POST':
#未提交查询内容,创建一个空表单
form=GetpriceForm()
else:
#POST提交的数据,对数据进行处理
form=GetpriceForm(data=request.POST)
if form.is_valid():
name=form.cleaned_data['stock_name']
date=form.cleaned_data['date'].strftime('%Y%m%d')
refer=GetPrice()
result=refer.by_name(name,date)
if not result.values.tolist():
result='没有找到当天关于“'+name+'”的价格信息'
else:
title=' '.join(result.columns.values.tolist())
value=' '.join([str(i) for i in result.values.tolist()[0]])
result=title+'\n'+value
context={'form':form,'result':result}
return render(request,'forum/get_stock_price.html',context)
views.py中的get_stock_price()视图函数面向用户实现一个简单的股票价格查询窗口,通过表单获取股票名称和查询日期字段,然后调用extends/get_price.py中的GetPrice类的by_name()方法查询某天的某只股票价格信息,将查询到的结果转化为字符串传给HTML模板。
效果
3.将项目部署到阿里云上
过程
参照这篇博客
Centos7部署Django项目
效果
服务器上