Python菜鸟成长记——简单实现用户登录和增删改查以及文件上传和下载
2016-10-10 15:59
597 查看
这一篇,将会展示用Python语言实现用户信息的增删改查
首先,先搭建项目框架,这个在上一节里有提到,就不再写
然后 ,搭好项目,就开始编码了,首先,先分析,我们要实现用户信息的管理,就先写好界面,根据界面来写数据库,这里只是实现最简单的用户信息管理,一般有用户名,密码,头像。实现增删改,就是需要三个botton。页面代码展示
登录页面代码`
后台登录
}
.in{
height:30px;
}
{% csrf_token %}
用户名:
密 码:
用户信息
}
.in{
height:30px;
}
.ad{
margin-top:15px;
{% for res in us%}
`这是添加用户信息页面
这是修改页面
文件,图片上传界面
以上是界面,下面我们在models.py里建表
这里文件上传,有些地方直接用filefield也是可以的
如果上传图片,也可直接写,但是需要安装pillow插件才能不报错,如:
写完数据库,在cmd里执行初始化,便生成了数据库,可以安装mysql的视图软件,直接可以看到数据表
下一步,在views.py里实现功能
在views.py里实现了功能之后,需要你在urls.py里配置方法的路径,这里用到了正则表达式,不懂得童鞋,下次再详细说
下面是在urls.py里
以上,就是简单实现用户信息管理的代码实现,当然,代码有很多可以改进的地方,只做参考。
首先,先搭建项目框架,这个在上一节里有提到,就不再写
然后 ,搭好项目,就开始编码了,首先,先分析,我们要实现用户信息的管理,就先写好界面,根据界面来写数据库,这里只是实现最简单的用户信息管理,一般有用户名,密码,头像。实现增删改,就是需要三个botton。页面代码展示
登录页面代码`
后台登录
u{
font:14px center; line-height:50px;
}
.in{
height:30px;
}
log{
margin-top:20px; width:90px; height:30px; font-size:14px;
{% csrf_token %}
用户名:
密 码:
</form> </center>
这是用户信息列表页面
用户信息
u{
font:14px center; line-height:50px;
}
.in{
height:30px;
}
.ad{
margin-top:15px;
width:40px; height:35px; background-color:#ccc;
{% for res in us%}
ID | 头 像 | 用户名 | 密 码 | 操 作 |
---|---|---|---|---|
{{res.id}} |
</td> <td>{{res.username}}</td> <td>{{res.password}}</td> <td><a href=/del/{{res.id}}/> <input type="button" value="删除"> </a> <a href=/modify/{{res.id}}> <input type="button" value="修改"> </a> <a href=/img/?id={{res.id}}> <input type="button" value="传图"> </a> <a href='https://oscdn.geek-share.com/Uploads/Images/Content/201610/10/ca4cc6453605abdc5a508410ea19743e'>下载</a> </td> </tr> {%endfor%} </table> <a href="/add/"> <input type="button" class="ad" name="add" value="添加"/> </a> <a href="/output"> <input type="button" class="ad" name="output" value="导出"/> </a> </center>
`这是添加用户信息页面
<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta charset="utf-8">
<title>添加用户</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
#u{
font:14px center; line-height:50px;}
.in{
height:30px;
}
#log{
margin-top:20px; width:90px; height:30px; font-size:14px;</style>
</head>
<body>
<center>
<form action="/addinform/" method="post">
{% csrf_token %}<!--模板标签-->
<span id="u">用户名:</span>
<input class="in" type="text" name="username"/><br/>
<span id="p">密 码:</span>
<input class="in" type="text" name="password"/><br/>
<input type="submit" value="保 存" id="sa"/>
</form> </center></body>
</html>
这是修改页面
<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta charset="utf-8">
<title>添加用户</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
#u{
font:14px center; line-height:50px;}
.in{
height:30px;
}
#log{
margin-top:20px; width:90px; height:30px; font-size:14px;</style>
</head>
<body>
<center>
<form action="/domodify/{{us.id}}/" method="post">
{% csrf_token %}<!--模板标签-->
<span id="u">用户名:</span>
<input class="in" type="text" name="username" value="{{us.username}}" /><br/>
<span id="p">密 码:</span>
<input class="in" type="text" name="password" value="{{us.password}}"/><br/>
<input type="submit" value="修 改" id="do"/>
</form> </center></body>
</html>
文件,图片上传界面
<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta charset="utf-8">
<title>上传</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
#u{
font:14px center; line-height:50px;}
.in{
height:30px;
}
#log{
margin-top:20px; width:90px; height:30px; font-size:14px;</style>
</head>
<body>
<center>
<form enctype="multipart/form-data" action="/upload/?id={{us}}/" method="post">
{% csrf_token %}<!--模板标签-->
<input type = "hidden" name = "id" value = "{{us}}"/>
<input class="in" type="file" name="file" value="{{uf.img}}"/><br />
<input type="submit" value="上 传" id="log"/>
</form> </center></body>
</html>
以上是界面,下面我们在models.py里建表
from __future__ import unicode_literals from django.db import models # Create your models here. class User(models.Model): username = models.CharField(max_length = 50) password = models.CharField(max_length = 50) img = models.CharField(max_length = 100)
这里文件上传,有些地方直接用filefield也是可以的
如果上传图片,也可直接写,但是需要安装pillow插件才能不报错,如:
img = models.ImageField(upload_to = './upload/',null=True)
写完数据库,在cmd里执行初始化,便生成了数据库,可以安装mysql的视图软件,直接可以看到数据表
下一步,在views.py里实现功能
#encoding:utf-8 from django.shortcuts import render from django.shortcuts import render_to_response from django.http import HttpResponse,HttpResponseRedirect from models import User from django.http import StreamingHttpResponse from django import forms import StringIO import re import os import xlwt #encoding:utf-8 # Create your views here. # coding=<encoding name> class userForm(forms.Form): username = forms.CharField() password = forms.CharField() img = forms.FileField(required=False) def Login(request): return render(request,'login.html') def dologin(request): if request.method == 'POST': uf = userForm(request.POST) if uf.is_valid(): username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] user = User.objects.filter(username__exact = username, password__exact = password ) if user: users = User.objects.all() con = {'us':users} return render(request,'inform.html',con) else: return HttpResponseRedirect('/login/') else: return render_to_response('login.html') def add(request): return render(request,'add.html') def addinform(request): if request.method == 'POST': uf = userForm(request.POST) if uf.is_valid(): username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] user = User(username=username,password=password) user.save() users = User.objects.all() con = {'us':users} return render(request,'inform.html',con) else: return render(request,'add.html') def deletett(request,p): User.objects.get(id=p).delete() users = User.objects.all() con = {'us':users} return render(request,'inform.html',con) def modify(request,p): u = User.objects.get(id=p) con = {'us':u} return render(request,'modify.html',con) def domodify(request,p): if request.method == 'POST': uf = userForm(request.POST) if uf.is_valid(): username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] u = User.objects.get(id=p) u.username = username u.password = password u.save() users = User.objects.all() con = {'us':users} return render(request,'inform.html',con) def img(request): u = request.GET.get('id') return render(request,'img.html',{"us":u}) #上传 def upload(request): if request.method == 'POST': uf = userForm(request.POST, request.FILES) print "aaaaaaaaaaaaaa" #if uf.is_valid(): ids = request.POST["id"] print 'eeeeeeee',ids img = request.FILES.get('file') file_name = str(img.name) print type(file_name) handle_upload_file(request.FILES['file']) u = User.objects.get(id = ids) u.img = file_name print "aaaaaasssfdfdg" u.save() print "qqwwee" users = User.objects.all() print "uuuuuuu" con = {'uf':users} print "rrrrrrrrre" return HttpResponseRedirect("/login/") print "ddddddddddd" else: return HttpResponseRedirect("/img/") #下载 def download(request): print "wwww" def file_iterator(file_name, chunk_size = 512): #32位系统 with open(file_name) as f: while True: c = f.read(chunk_size) #迭代器,适用于大小文件 if c: yield c else: break print "aaaa" img = r'E:\pywork\mysite\products\static\\'+request.GET.get('img') print "mmm",type(img),img #StreamingHttpResponse用于将文件流发送给浏览器,优于HttpResponse response = StreamingHttpResponse(file_iterator(img)) #让文件流写入硬盘,防止乱码 response["Content-Type"] = "application/octet-stream" response["Content-Disposition"] = "attachment;filename={0}".format(img) print "fff" return response
在views.py里实现了功能之后,需要你在urls.py里配置方法的路径,这里用到了正则表达式,不懂得童鞋,下次再详细说
下面是在urls.py里
from django.conf.urls import patterns, include, url from django.contrib import admin from products import views from django.conf import settings import os urlpatterns = patterns('', # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^login/', views.Login), url(r'^dologin/', views.dologin), url(r'^add/', views.add), url(r'^addinform/', views.addinform), url(r'^del/(.+)/$', views.deletett), url(r'^modify/(.+)/$', views.modify), url(r'^domodify/(.+)/$', views.domodify), url(r'^img/', views.img), url(r'^upload/', views.upload), url(r'^download/', views.download), url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document.root':settings.STATICFILES_DIRS}), url(r'^output/', views.output), )
以上,就是简单实现用户信息管理的代码实现,当然,代码有很多可以改进的地方,只做参考。
相关文章推荐
- 二、spring mvc模拟用户增删改查以及登录和上传文件的相关流程
- spring mvc模拟用户增删改查以及登录和上传文件的相关流程
- 基于socket,实现用户注册,用户登录,以及文件上传的例子
- JavaScript/Jsp 实现对数据库的增删改查和简单的下载上传文件
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
- 搭建ftp服务,匿名用户登录可实现文件的上传下载
- Spring MVC代码实例系列-10:Spring MVC实现简单的文件上传和下载
- MongodbGFS结合SpringBoot 实现大文件的简单上传与下载
- MongodbGFS结合SpringBoot 实现大文件的简单上传与下载
- 使用cmd命令方式登录ftp实现上传下载文件数据
- spring boot 实现文件上传和下载,以及多文件上传
- springmvc文件上传下载简单实现案例(ssm框架使用)
- Thinkphp中实现文件上传下载以及去除重复
- 一个简单的QQ隐藏图生成算法 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传
- SpringBoot 简单文件上传实现以及jar包方式运行项目
- linux下实现ftp匿名用户的上传和下载文件功能
- 关于文件上传下载以及其他进度条的实现
- springmvc文件上传下载简单实现案例(ssm框架使用)
- springmvc框架的搭建以及实现简单的文件上传
- 完整实现文件上传下载以及输出下载列表