软件工程团队项目,第6周——模拟交易上线

软件工程团队项目,第6周——模拟交易上线


啊~ 又是周三了,又要写上周的博客了。但是感觉今天好累啊,不想写太多。

1.任务

Lu同学模拟交易的django版上周就已经发布了,这周把模拟交易上线,主要是把模拟交易关于用户的数据与论坛的用户对接,然后前端套上统一风格的页面,然后修修补补,本来立个flag打算在这周末就把整个项目挂在服务器上的,无奈有很多小问题,flag就又倒了。

2.模拟交易

在这里插入图片描述
主要的功能大概就和上面几个界面描述的一样。创建委托(买卖)、取消委托、查看个人账户啥的,后面还让Lu同学加了个排行榜。模拟交易涉及的几个模型分别是委托类、成交记录类和持仓股票类,数据相差不大,主要是股票的code、相关操作类型、创建时间、备注、价格、关联的用户等等。
模型关联的用户方面我关联的是UserProfile类而不是User类,因为User类我用的是Django原生的用户类,所以不太想修改。于是就在UserProfile里面加上一个用户名属性。
一开始我的想法是这样的:

class UserProfile(models.Model):
    owner = models.OneToOneField(User,on_delete=models.CASCADE)
    username = models.CharField(max_length=20,default=owner.username)

但是这里出问题了,具体的报错我没记录,大概内容是OneToOneField has no attribute ‘username’,这里我纠结了半天愣是没想明白。我猜测不能这样搞的原因是:系统在用户注册时创建与之关联的UserProfile对象,没有手动加这个username,而是选择给他一个默认值,但这个默认值又是模型的属性,模型还没有被保存,从内部访问只是一个空的OneToOneField类,因此无法访问所关联模型的属性。(好绕啊)
于是只能在模拟交易的所有视图函数中一个一个改,原来是commission.user.name,现在要改成commission.user.owner.name,非常麻烦,看起来也非常傻。
现在想想,在创建UserProfile对象的时候手动设置一下这个属性不就好了?
然后就是套前端的页面模板,委托列表那里Zhang同学说可以用首页那个列表的样式,于是我就用了。之后发现了一个非常别扭的地方。
在这里插入图片描述
就是翻页这里,当有下一页的时候,鼠标放到下一页那个按钮那里,按钮就会变红。但是如果有上一页,鼠标放到上一页那里就不会变红。之前看到Zhang同学发过来的页面模板里面两个按钮都是有变红效果的。我看着不爽,硬要找出原因来。
看了一下浏览器的报错好像是js的问题,但是这种高大上的页面样式自带的js好像很难写错。最后搞了半天,发现是table标签的id问题,js应该是按照id来给table上效果的,但是这个页面有3个table,而且我都忘记改id了,于是id都一样。
在这里插入图片描述
js代码可能因为3个table的id都一样而非常迷惑,所以渲染的效果也非常迷惑。(当然,我本人是不懂js的,html也只了解一点点)

然后看一下整体的效果。
在这里插入图片描述
还挺不错的。

3.股票预测等待页面

Xu同学搞得那个非常高端的机器学习预测股票的确是非常nb的功能,但就是太慢了,我这破电脑上跑要等个一两分钟才能预测完一只股票。用户如果不知情的话点了一次没反应,然后疯狂点击,于是多个机器学习进程开启,那真的就是越点越慢,再点挂机。所以要设计一个等待页面,用户点了股票预测按钮之后就显示等待页面,还搞个gif啥的。
设计思路是,在按钮上设计onclick时间,用户点击之后将当前页面的html内容替换成正在预测的提示,显示一个gif。

<a href="{% url 'forum:stock_est' stock_code %}"><button class="btn btn-success text-right" onclick="changeToLoading()">股票预测</button></a>
<script>
  function changeToLoading(){
    var obj=document.getElementById('loadingDiv');
    obj.innerHTML="<br><br><br><br><br><br><br><br><br><br><br><br><div style='text-align: center;'><p>正在预测中,这可能需要20s~1min的时间</p><img src={% static 'images/preloader.gif' %} /></div><br><br><br><br><br><br><br><br><br><br><br>";
  }
</script>

效果如下
在这里插入图片描述
感觉还阔以。

4.注册了个域名

组员们说每次都访问服务器ip有点low了,申请个域名不香吗?于是我就尝试了一下注册一个域名。
服务器是部署在阿里云上的,干脆域名也在阿里云上申请。
先搜索想要的域名是否可注册。
在这里插入图片描述
如果可以那就花点钱注册一下,然后需要认证个人邮箱和个人信息(还要拍身份证上传)。等到域名状态显示可用了,就把它与服务器的ip绑定。等几个小时之后DNS刷新了,就能通过域名访问到网站了。
啊,但是好像没这么简单。输域名如果不指定端口的话是会把请求指定到22端口的,而阿里云会检测22端口,如果网站没备案的话。。。就会把那个端口的服务封掉┑( ̄Д  ̄)┍ 。 也就是说,如果服务是放在22端口的网站需要备案,于是开始备案,各种详细信息、还要写网站的性质、内容啥的,搞得我很紧张,要是有人盗我服务器ghs我被抓走怎么办(狗头)?但还是申请备案了。结果没成功,原因是域名的备案还没有录入库管局。
那干脆不备案了,服务从8000端口开,输域名的时候多输个冒号指定一下端口号。然后就行了,成功让项目看起来更加高端一点(狗头)。

5.一点点感想

啊不写了不写了,虽然还有很多细节问题的解决过程值得记录,但是前两天晚上都因为项目完善和上线准备搞得比较晚,今天感觉好累,还是早点睡觉吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值