D14 重新设定create date & 上传功能测试

将create date的auto_now_add删除 并加入upload相关栏位
DateTimeField()设定auto_now_add的话 会在创建文件的时候自动加入时间戳记
後续如果使用update(只调用sql)也没问题
但如果用save(走过model)
你不传值给他,他会把create date设为null
你传值给他,他会说这个栏位是不可更改的
一般来说都会用update更新
但是上传附件要用save,会经过model层,所以一定会遇到这个问题
然後新增加upload file需要的两个栏位
指定upload_to会将档案储存到upload资料夹内
doc_info/models.py

from django.db import models
from django.contrib.auth.models import User
from allauth.account.models import EmailAddress

class doc_warehouse(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='doc_warehouse')
    create_date = models.DateTimeField()
    last_mod_date = models.DateTimeField(auto_now=True)
    title = models.CharField(max_length=128, blank=True)
    remark = models.CharField(max_length=128, blank=True)
    status = models.IntegerField(default=1, null=True, blank=True)
    link = models.CharField(max_length=128, blank=True)
    upload_file_name = models.CharField(max_length=128, blank=True)
    upload_file = models.FileField(upload_to='upload',null=True, blank=True)

下列方法可以让保持create date然後又更新其他资讯
doc_info/views.py

def doc_test(request):
    i=5
    doc_create_date = doc_warehouse.objects.get(id=153).create_date
    doc = doc_warehouse(
        id = 153,
        create_date = doc_create_date,
        user_id = i,
        title = f"tittle {i}",
        remark = f"remark {i}",
        link = f"link {i}",
    )
    doc.save()
    return render(request, 'doc/test.html')

下列方法可以将用POST方式传到test的资讯跟档案上传到资料库内
doc_info/views.py

def doc_test(request):
    if request.method == "POST":
        upload_file_name = request.POST["fileTitle"]
        upload_file = request.FILES["uploadedFile"]
         document = doc_warehouse(
            user_id = 4,
            upload_file_name = upload_file_name,
            upload_file = upload_file,
        )
        print(document)
        document.save()
    return render(request, 'doc/test.html')

加入table展示request传送过来的讯息
建立一个简单的上传功能form
templates/test.html

{% block content %}

<table border="1">
    <tr><th>Attributes</th><th>Result</th></tr>
    <tr><td>request</td><td>{{request}}</td></tr>
    <tr><td>request.get_host</td><td>{{request.get_host}}</td></tr>
    <tr><td>request.encoding</td><td>{{request.encoding}}</td></tr>
    <tr><td>request.method</td><td>{{request.method}}</td></tr>
    <tr><td>request.scheme</td><td>{{request.scheme}}</td></tr>
    <tr><td>request.data</td><td>{{request.data}}</td></tr>
    <tr><td>request.path</td><td>{{request.path}}</td></tr>
    <tr><td>request.path_info</td><td>{{request.path_info}}</td></tr>
    <tr><td>request.content_type</td><td>{{request.content_type}}</td></tr>
    <tr><td>request.content_params</td><td>{{request.content_params}}</td></tr>
    <tr><td>request.GET</td><td>{{request.GET}}</td></tr>
    <tr><td>request.POST</td><td>{{request.POST}}</td></tr>
    <!-- <tr><td>request.COOKIES</td><td>{{request.COOKIES}}</td></tr> -->
    <tr><td>request.FILES</td><td>{{request.FILES}}</td></tr>
    <!-- <tr><td>request.META</td><td>{{request.META}}</td></tr> -->
    <tr><td>request.headers</td><td>{{request.headers}}</td></tr>
    <tr><td>request.headers.user_agent</td><td>{{request.headers.user_agent}}</td></tr>
    <tr><td>request.read</td><td>{{request.read}}</td></tr>


</table>
<h2>Add ok</h2>

<body>
    <form action="{% url 'doc_info:test' %}" method="POST" enctype="multipart/form-data">
        <input type="text" name="fileTitle" placeholder="Enter a title">
        <input type="file" name="uploadedFile">
        {% csrf_token %}
        <input type="submit" value="Upload">
    </form>   
</body>
{% endblock %}

Imgur


<<:  Day20 - 轻前端 Vue - 复杂型别 object + object collection

>>:  快速新增范例资料

想想看,冰块跟竹子怎麽搭载一起的?

早起运动Day5-自我对谈​ ​ 在运动时也会想起相遇过的人,看过的书,经验过的故事。​ ​ 『看起...

Day 26:ELK stack for observation system

今天介绍的这篇,是很明显的天气IoT实例应用,作者将天气Sensor收集来要资料,用Logstash...

[Day 27] LeetCode - 7 Reverse Integer

本篇同步发布於Blog:[解题] LeetCode - 7 Reverse Integer 平台: ...

Day 33 (MySQL)

1.安装 (1)官方网站(只有MySQL) https://dev.mysql.com/ (2)下载...

[DAY22] Boxenn Use Case Spec

Use Case Spec 这边以之前的 use case 当作例子来撰写测试。 首先要能快速地建立...