Django学习 7

前台提交数据到数据库

这个我也是想学了很久啊,如果不会这种操作那么后面很多东西都没办法去做,虽然说我看的视频水平不高,但是自己也比较菜,准确来说是菜的一批,所以说还是得好好学习啊,太难了。wdnmd刚刚上午写个开头想下午写的,结果下午pycharm的源直接炸了,搞的我人都吐了,弄了半天,搞成阿里源才搞好。

首先我们需要去页面里添加一个新的页面用来提交数据

<h2 align="center">发布新的APP</h2>
    <form action="{% url '发布页面' %}" method="post" align="center" enctype="multipart/form-data">
        {% csrf_token %}
        APP名称:<br><input class="hanpi" type="text" name="APP名称"><br><br>
        介绍:<br><textarea name="介绍" cols="100" rows="10"></textarea><br>
        APP链接: <br><input type="text" name="APP链接"><br><br>
        APP图标(缩略图):<input type="file"  name="APP图标"><br><br>
        大图:<input type="file" name="大图"><br>{{ 错误 }}<br>
        <input class="hanpi btn btn-primary" type="submit" value="发布">
    </form>

这里面的数据我们前面基本上都看到了,就如同我们之前的注册和登录页面一样,这是我们提交了一个post请求到‘发布页面’,然后到urls里面注册一下

path('publsh/', views.publsh, name= '发布页面'),

现在我们得到了这么多的数据,那我们需要去models.py里面新建一下我们的数据库表,用来存放数据

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Product(models.Model):
    app_name = models.CharField(max_length=50, verbose_name='APP名称')
    intro = models.TextField(verbose_name='介绍')
    url = models.CharField(default='Https://', verbose_name='链接', max_length=100)
    icon = models.ImageField(verbose_name='图标', upload_to='images/')
    image = models.ImageField(verbose_name='图片', upload_to='images/')

    votes = models.IntegerField(default=1, verbose_name='投票数量')
    pub_data = models.DateTimeField()
    hunter = models.ForeignKey(User, on_delete=models.CASCADE)
    //这个就是将登录的人连接到数据库中,用来显示自己发布的东西
    def __str__(self):
        return self.app_name

这里我是有一个新的app来存放数据,这个其实也是前面的内容,然后我们去创建一下这个表(具体前面有讲),然后就可以开始写我们的views.py文件了,在这里我们需要创建一个publsh(与urls里面的名字一样)函数来处理接收到的数据

from django.shortcuts import render,redirect
from django.contrib.auth.decorators import login_required
from .models import Product
from django.utils import timezone

@login_required  //登录的验证
def publsh(request):
    if request.method == 'GET':
        return render(request, 'publsh.html')
    elif request.method == 'POST':
        app_name = request.POST['APP名称']
        intro = request.POST['介绍']
        url = request.POST['APP链接'] 
        try:
            icon = request.FILES['APP图标']
            image = request.FILES['大图']
            product = Product()
            product.app_name = app_name
            product.intro = intro
            product.url = url
            product.icon = icon
            product.image = image
            product.pub_data = timezone.datetime.now()
            product.hunter = request.user
            product.save()
            return redirect('主页面')
        except Exception as err:
            return render(request, 'publsh.html', {'错误':'请上传图片'})

只要使用一个变量去获取到之前Product,然后去等于就行了,最后使用save函数来存储我们所得到的数据就行了(就这就这?)当然这里设定了一个是否上传图片的try,为了保证不出错所使用的。

这个写完我觉得我目前的学习可以到新的阶段了,可能会休息一段时间,为了让自己有更好的心情和心态去学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值