一起来种菜吧(一)

5 篇文章 0 订阅

最近心血来潮弄了个蔬菜(瓜果)采收管理应用。 在Windows操作系统上,采用Django搭建Web服务器中间件。前端使用VUE的示例部分CSS。

命令行窗口输入以下命令创建web站点,生成基本的Django配置文件:

>django-admin startproject mysite
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
//跳转至项目根目录
>cd mysite

创建Django app:

>python manage.py startapp app
app/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

在web站点根目录使用startapp命令,创建的app所有目录以该根目录为父目录。 

然后,启动Django内置的测试服务器。

//默认端口是8000
>python manage.py runserver
//指定服务端口8080
>python manage.py runserver 8080

 更多操作示例可以查看Django官方网站手册。

在Django app的urls.py添加路径路由寻址:

path('crop/<int:page_id>/', views.croplist, name='croplist'),

 在该app的views.py添加croplist方法:

def croplist(request, page_id=1):
    if page_id<=0 or page_id>=2147483648:
        raise Http404('Oops! Page not found.')
    return HttpResponse('To be continued...')

 在models.py添加数据库table表对应的class类:

作物Crop:

class Crop(models.Model):
    id=models.AutoField(primary_key=True)
    vegetable=models.ForeignKey(Vegetable, on_delete=models.CASCADE)
    sow_date=models.DateTimeField('sowing date')
    tran_date=models.DateTimeField('transplant date')
    count=models.IntegerField(default=1)
    
    def __str__(self):
        return self.id+'. '+self.vegetable.name+', '+self.sow_date.strftime('%Y/%m/%d')

 蔬菜Vegetable:

class Vegetable(models.Model):
    name=models.CharField(max_length=200)
    english_name=models.CharField(max_length=200, default='')
    nursery_period=models.IntegerField(default=16)    
    florescence=models.IntegerField(default=15)
    fruit_period=models.IntegerField(default=15)
    min_lifespan=models.IntegerField(default=30)
    lifespan=models.IntegerField(default=60)
    comment=models.CharField(max_length=200)

    def __str__(self):
        return self.name+', '+str(self.nursery_period)+'/'+str(self.lifespan)

数据库结构多次迭代完成后,提交到Django数据库管理系统。在操作系统命令行模式下,输入相关命令。

>python manage.py makemigrations myapp
>python manage.py sqlmigrate myapp 0001
>python manage.py migrate

应当注意数据的稳定性、完整性和一致性 ,避免无序重构数据库结构导致的数据混乱和数据库解构的灾难。

作物列表:

crop_list

播种日期: 

 

种植天数: 

最早采摘期: 

最晚采收期: 

收获逾期天数: 

最佳收获期剩余时间: 

 

距离采摘期天数: 

 

可采摘状态: 

 小苗:

发芽: 

播种: 

采收示警: 

目前,仅完成作物列表静态展示模块。view代码没怎么组织,直接在views.py敲,虽仅153行略混乱,待上传。这里实现了作物状态与时间的二维关联。后续考虑引入Apache的ECharts或其他库实现更复杂的关联。


注:蔬菜种类和生长状态图片来源于网络搜索。

注:示例引用来源于Django Documentation -- https://docs.djangoproject.com/en/3.1/intro/tutorial01/

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值