Django,Forms

Django, Forms 使用forms完成了用户登录 1、创建model class User(User): pass 这里使用了django提供的User类,直接继承 2、创建UserForm类 class SigninFrom(forms.Form): user_name = forms.CharField() user_email = forms.EmailField() user_password = forms.CharField() 3、完成模板 <form action="{% url 'permission:signin' %}" accept-charset="UTF-8" method="post"> <input name="utf8" type="hidden" value="&#x2713;"/> {% csrf_token %} <dl class="form-group mt-0"> <dt class="input-label"> <label class="form-label f5" for="user[login]">用户名</label> </dt> <input type="text" name="user_name" id="user_name" class="form-control form-control-lg input-block" placeholder="{{ default_name }}" autofocus> </dl> <dl class="form-group"> <dt class="input-label"> <label class="form-label f5" for="user[email]">Email</label> </dt> <dd> <input type="text" name="user_email" id="user_email" class="form-control form-control-lg input-block js-email-notice-trigger" placeholder="you@example....

February 25, 2021 · 2 min · 李昌

django中forms的定义

django中forms的定义 直接定义 class ContactForm(forms.Form): date = DateField(widget=CalendarWidget) name = CharField(max_length=40, widget=OtherWidget) widget参数定义了要使用的小部件,小部件选项可见这里 通过模型定义 必须继承ModelForm类 from django.forms import ModelForm class BlogForm(ModelForm): class Meta: model = Blog fields = ['author', 'essay', 'title', 'label', 'cover'] widgets = { 'essay': CKEditorWidget, 'cover': } 通过定义内部类来生命form的属性 常用内部类参数说明: model: 说明要继承的模型 field:说明要在表单中显示的字段,__all__表示所有 exclude: 要从表单中排除的字段 widgets: 设置字段的小部件 (详细文档)

February 25, 2021 · 1 min · 李昌

django中使用highchart

django中使用highchart 引入js文件 顺序不能错 <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script src="https://code.highcharts.com/highcharts.js"></script> 一点小插曲 在刚开始使用highchart时,由于使用的是继承模板,导致js文件引入的顺序没有把握好,导致不能显示图像,因此将上面两句提到base.html的前面,然后可以显示图像。

February 25, 2021 · 1 min · 李昌

Django中图像的处理方法

Django 中图像的处理方法 图像的上传保存 前端图片的上传: <form action="/updateinfo" method="POST" enctype="multipart/form-data"> <div class="updateImg"> <img src="{{ account.photo.url }}" alt=""/> </div> <input name="photo" type="file" id="exampleInputFile"> <button id="photo" class="btn btn-danger" type="submit">上传头像</button> </form> 其中input标签的type为file, 2. 图片模型 models.ImageField(upload_to=‘path’) upload_to的储存路径是相对于MEDIA_ROOT而来的,若MEDIA_ROOT为/media/,upload_to路径为image,则图片上传后的储存路径为/media/image 在前端显示上传的图片 {% load static %} <body data-media-url="{% get_media_prefix %}"> 使用get_media_prefxi模板tag,代表MEDIA_URL变量 <img src="{% get_media_prefix %}/{{ page.cover }}" alt = "{{ page.cover }}"> 存在的问题 每个用户上传的图片集中在一个文件夹下,容易造成命名冲突, 可参考这里

February 25, 2021 · 1 min · 李昌

docker常用操作

docker常用操作 启动docker服务 sudo systemctl start docker 查看本地镜像 sudo docker images 查看正在运行的镜像 sudo docker ps 查看所有镜像 sudo docker ps -a 停止正在运行的镜像 sudo docker stop container_name 开始运行某个镜像 sudo docker start container_name 删除某个镜像 sudo docker rmi container_name 进入某个正在运行的镜像 sudo docker attach container_name 导出容器 sudo docker export container_id > name.tar 导入容器 cat name.tar | sudo docker import -test/buntu:v1.0 从网络导入 sudo docker import http://example.com/exampleimage.tgz example/imagerepo 非sudo运行 sudo usermod -aG docker $USER && newgrp docker # 将当前用户添加到docker用户组 退出重新登陆即可

February 25, 2021 · 1 min · 李昌

docker的安装(Ubuntu)

1、docker的安装(Ubuntu) 1.1、 设置存储库 若是已安装旧版本的docker, 请卸载:sudo apt-get remove docker docker-engine docker.io containerd runc 1.1.1、更新apt索引 sudo apt-get update 1.1.2、安装依赖 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common 1.1.3、添加docker官方的GPG秘钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 在进行此步时,出现了sudo: unable to resolve host iZ2ze4512bfzoapfvch6btZ,这是因为机器不能反向解析 打开主机上的 /etc/hosts 添加: 127.0.0.1 【hostname】# 【hostname】用主机名替代 可在/etc/hostname中修改主机名,sudo shutdown -r now重启过后完成主机名修改 验证添加成功: sudo apt-key fingerprint 0EBFCD88 1.1.4、 设置存储库 sudo add-apt-repository "deb [arch=amd64] https://download....

February 25, 2021 · 2 min · 李昌

Flag包的基本用法

Flag包的基本用法 flag包用于处理golang命令行程序中的参数 1. 使用flag包的基本流程 使用flag包涉及三个步骤: 定义变量以捕获标志值 定义Go应用程序将使用的标志 在执行时解析提供给应用程序的标志。 flag软件包中的大多数功能都与定义标志并将其绑定到定义的变量有关。解析阶段由Parse()函数处理。 一个例子 创建一个程序,该程序定义一个布尔标志,该标志会更改将打印到标准输出的消息。如果-color提供了一个标志,程序将以蓝色打印一条消息。如果未提供标志,则消息将被打印为没有任何颜色。 // boolean.go import ( "flag" "fmt" ) type Color string // 定义变量以捕获标志值 const ( ColorBlack Color = "\u001b[30m" ColorRed = "\u001b[31m" ColorGreen = "\u001b[32m" ColorYellow = "\u001b[33m" ColorBlue = "\u001b[34m" ColorReset = "\u001b[0m" ) func colorize(color Color, message string) { fmt.Println(string(color), message, string(ColorReset)) } func main() { useColor := flag.Bool("color", false, "display colorized output") // 定义Go应用程序将使用的标志 flag....

February 25, 2021 · 1 min · 李昌

GithubAPI问题

Github API问题 使用github的RESTful API 访问https://developer.github.com/v3/来查看帮助文档 API访问限制 在云服务器上使用git的API时,发现出现message":"API rate limit exceeded for 59.110.140.133. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)","documentation_url":"https://developer.github.com/v3/#rate-limiting提示信息,显然,这是存在着访问限制。 查看访问限制 使用curl -i https://api.github.com/rate_limit查看自己的限制信息 HTTP/1.1 200 OK Content-Type: application/json X-Ratelimit-Limit: 60 X-Ratelimit-Remaining: 59 X-Ratelimit-Reset: 1585470905 Date: Sun, 29 Mar 2020 07:49:35 GMT Content-Length: 482 Accept-Ranges: bytes X-GitHub-Request-Id: BB32:30AB:3EF690:50F336:5E80530E { "resources": { "core": { "limit": 60, "remaining": 59, "reset": 1585470905 }, "graphql": { "limit": 0, "remaining": 0, "reset": 1585471775 }, "integration_manifest": { "limit": 5000, "remaining": 5000, "reset": 1585471775 }, "search": { "limit": 10, "remaining": 10, "reset": 1585468235 } }, "rate": { "limit": 60, "remaining": 59, "reset": 1585470905 } } rate....

February 25, 2021 · 1 min · 李昌

go get代理方案

直接干终极方案: go env -w GOPROXY=https://goproxy.cn,direct 修改hosts,然后reboot 添加 192.30.253.112 github.com 151.101.185.194 github.global.ssl.fastly.net 到/etc/hosts 然后reboot go get golang.org 在使用go get golang.org/...时,总是time out(就算fp也一样,fp之后可以访问golang.org),不知道为啥。 幸好github上存在golang.org的镜像 例如 go get -u golang.org/x/net 那么这个包的位置在github上就是github.com/golang/net, 所以,我们可以手动建立golang.org/x/目录,并切换到该目录下,然后使用 git clone https://github.com/golang/net.git **注意:**要使用git clone命令,直接下载下来复制到目录下会提示找不到版本号。 终极方案 go env -w GOPROXY=https://goproxy.cn,direct

February 25, 2021 · 1 min · 李昌

golang中的print系函数详解

golang中的print系函数详解 pirnt系函数来自fmt包,主要用于做各种格式的输出 这些函数主要有 golang中的print系函数详解 fmt.Fprintf fmt.Printf fmt.Sprintf fmt.Fprint fmt.Print fmt.Sprint fmt.Fprintln fmt.Println fmt.Sprintln 总结 下面来逐个分析 import ( "fmt" "os" "io" ) fmt.Fprintf 函数原型: Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) 官方注释 Fprintf formats according to a format specifier and writes to w.It returns the number of bytes written and any write error encountered. Arguement fmt.Fprintf() 依据指定的格式向第一个参数内写入字符串,第一参数必须实现了 io....

February 25, 2021 · 5 min · 李昌