Django,静态文件配置
保证django能正常运行的几个注意事项
1.保证你的计算机名不能是中文 2.一个pycharm窗口就对应一个项目(工程) 3.文件路径命名尽量不要用中文 4.启动django确保端口不能重复 5.新创建的app必须在settings配置文件中注册才能生效
View Code
静态文件配置
#1、STATIC_URL = ‘/static/' 看是否已经存在,不存在添加上,一般都存在 #2、创建一个static文件夹 (放图片、css等静态相关) 3、STATICFILES_DIRS=[os.path.join(BASE_DIR,'static') 创建文件夹路径,可以写多个
自定义登陆功能
def login(request):if request.method == 'GET':return render(request,'login.html',locals())elif request.method =="POST":#print(request.POST)# print(request.POST.get('name')) 后台输出: <QueryDict: {'name': ['11'], 'pwd': ['11']}> 11这里print(request.POST)value是一个列表 而 print(request.POST.get('name'))取列表中最后一个#如何获取列表 #request.POST.getlist('name')
Views
django命令行创建项目
#django-admin startproject '项目名' #创建app #python manage.py startapp '应用名' #启动django #python manage.py runserver
---django链接mysql---
1.settings配置文件database
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'lqz','USER': 'root','PASSWORD': '123456','HOST': '127.0.0.1','PORT': 3306,'ATOMIC_REQUEST': True,'OPTIONS': {"init_command": "SET storage_engine=MyISAM",}} } ''' 'NAME':要连接的数据库,连接前需要创建好 'USER':连接数据库的用户名 'PASSWORD':连接数据库的密码 'HOST':连接主机,默认本机 'PORT':端口 默认3306 'ATOMIC_REQUEST': True, 设置为True统一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。 是全局性的配置, 如果要对某个http请求放水(然后自定义事务),可以用non_atomic_requests修饰器 'OPTIONS': {"init_command": "SET storage_engine=MyISAM",} 设置创建表的存储引擎为MyISAM,INNODB
View Code
2.在app下的__init__文件均可,告诉django用pymysql链接数据库而不再使用默认的mysqldb
import pymysql pymysql.install_as_MySQLdb()
---ORM(对象关系映射)---
注意!!django-orm不能创建数据库(需要手动创建) ,只能创建表和字段
数据库迁移命令
python manage.py makemigrations 把你的更改记录记录到小本本python manage.py migrate 将你的改动操作同步到数据库 或tools---->Run manage.pk后敲
makemigrations
migrate
#只要动了models.py中类与表相关的东西,就必须得重新执行上面的两条命令
模型表增加字段
#注意:给一个已经有数据的表中添加新字段,需要设置默认值 id = models.AutoField(peimary_key=True) name = models.CharFiled(max_length=64,default='pdun')
修改数据
#直接修改类中的字段,然后执行数据库迁移命令
模型表数据的增删改查
查:
在views中导入models #注意!! #如果是 from app01.models import * #直接User.objects.all()#1、models.User.objects.all() # 查询到User表中所有的数据,执行结果是一个queryset对象 只要是queryset对象就可以点.query查看当前查询出来的queryset对象内部的sql语句#2、models.User.objects.get() # get拿出来的是数据对象本身,如果查询不存在直接报错#3、models.User.objects.filter() # filter拿出来是queryset对象,如果查询不存在不报错只返回空 # 注意 用filter查询出来不是数据对象本身 相当于[数据对象1,数据对象2,数据对象3] # 获取数据对象本身 models.User.objects.filter().first() >>> models.User.objects.filter()[0] # queryset虽然支持索引取值,但是索引不能为负数
from django.shortcuts import render,redirect # from app01.models import * from app01 import models# Create your views here.def userlist(request):if request.method == 'GET':ret = models.User.objects.all() #拿到所有数据传给HTMLreturn render(request, 'userlist.html', {'user_list': ret}) ------------------------------------------------------------------- <table border="1"><thead><tr><th>id</th><th>name</th><th>password</th><th>addr</th><th>编辑</th> #添加新字段</tr></thead><tbody>{% for user in user_list %} <tr><td>{{ user.id }}</td><td>{{ user.name }}</td><td>{{ user.password }}</td><td>{{ user.address }}</td><td><a href="">删除</a></td> #每行后添加删除按钮</tr>{% endfor %}</tbody>
简单的字段操作,添加删除按钮
数据增删改查
6 user的增删改查***重点****:1 单表查询所有用户:models.User.objects.all()得到的是 queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]2 render(request, 'userlist.html', {'user_list': ret})3 模板里: {% for user in user_list %}#要循环的内容 {{user.name}}{% endfor%}4 get请求携带参数:http://127.0.0.1:8000/deleteuser/?id=1后台取值:request.GET.get('id')request.GET['id']5 orm删除记录 models.User.objects.filter(id=id).delete()返回值:影响的行数6 前台post提交的数据取值:name=request.POST.get('name')7 orm保存:两种方式:1 user=models.User.objects.create(name=name,password=pwd,address=addr)2 user=models.User(name=name,password=pwd,address=addr)user.save()8 orm查询单条数据:user=models.User.objects.filter(id=id).first()9 orm的修改 models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr)
from django.shortcuts import render,redirect from app01 import models# Create your views here. def userlist(request):if request.method == 'GET':ret = models.User.objects.all()return render(request, 'userlist.html', {'user_list': ret})def deleteuser(request):if request.method == 'GET':id = request.GET.get('id')ret = models.User.objects.filter(id=id).delete()print(ret)return redirect('/userlist/')def adduser(request):if request.method=='GET':return render(request,'adduser.html')elif request.method=='POST':name=request.POST.get('name')pwd=request.POST.get('password')addr=request.POST.get('addr')# 方式一user=models.User.objects.create(name=name,password=pwd,address=addr)# 方式二user=models.User(name=name,password=pwd,address=addr)user.save()print(user.name)print(type(user))return redirect('/userlist/')def updateuser(request):if request.method=='GET':id=request.GET.get('id')user=models.User.objects.filter(id=id).first()return render(request,'updateuser.html',{'user':user})if request.method=='POST':id=request.POST.get('id')# id2=request.GET.get('id')# print(id)# print(id2)name=request.POST.get('name')pwd=request.POST.get('password')addr=request.POST.get('addr')models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr)return redirect('/userlist/')
views.py
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <table border="1"><thead><tr><th>id</th><th>name</th><th>password</th><th>addr</th><th>删除</th><th>编辑</th></tr></thead><tbody>{% for user in user_list %}<tr><td>{{ user.id }}</td><td>{{ user.name }}</td><td>{{ user.password }}</td><td>{{ user.address }}</td><td><a href="/deleteuser?id={{ user.id }}">删除</a></td><td><a href="/updateuser?id={{ user.id }}">编辑</a></td></tr>{% endfor %}</tbody><a href="/adduser/">新增用户</a> </table> </body> </html>
userlist.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body>#后端获取id有两种方法,一种action后边的参数,一种用hidden隐藏一个id <form action="/updateuser/?id={{ user.id }}" method="post"><p><input type="hidden" name="id" value="{{ user.id }}"></p><p>用户名: <input type="text" name="name" value="{{ user.name }}"></p><p>密码: <input type="text" name="password" value="{{ user.password }}"></p><p>地址: <input type="text" name="addr" value="{{ user.address }}"></p><input type="submit" value="提交"></form> </body> </html>
updateuser
from app01 import views urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^userlist/', views.userlist),url(r'^deleteuser/', views.deleteuser),url(r'^adduser/', views.adduser),url(r'^updateuser/', views.updateuser), ]
urls
转载于:https://www.cnblogs.com/pdun/p/10714664.html
Django,静态文件配置相关推荐
- Django静态文件配置
本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...
- 解决Django静态文件配置pycharm高光问题
就困扰了我半天的Django静态文件配置问题 更改了setting 文件后 文件参考问题总会高亮让然觉得又错误怪怪的 所以索性直接眼不见心不烦 具体操作如下图: 就这样就可以啦 大功告成! 也顺便提一 ...
- 各种 django 静态文件的配置总结【待续】
2019独角兽企业重金招聘Python工程师标准>>> 最近在学习django框架的使用,想引用静态css文件,怎么都引用不到,从网搜了好多,大多因为版本问题, 和我现在的使用的da ...
- Django之静态文件配置
静态文件 了解静态文件配置之前,我们需要知道静态文件是什么? 静态文件其实指的是像css,js,img等一些被模板需要的文件. 如何在Django中配置我们的静态文件 1.建立static文件夹,将静 ...
- Python的web框架Django(1):HTTP、简介、静态文件配置、路由系统、视图函数、模板语言、ORM、Ajax、分页器、forms、Cookie、Session、中间件、ModelForm
1. HTTP协议 1)HTTP请求协议 请求格式 POST(方法) /form/entry(URI) HTTP/1.1(协议版本) HOST:hackr.jp(服务端地址) Connection:k ...
- Django静态文件处理、中间件及Admin站点
Django静态文件处理.中间件及Admin站点 文章目录 Django静态文件处理.中间件及Admin站点 一.静态文件 1.简介 2.示例 3.配置静态文件 二.中间件 1.简介 2.示例 3.异 ...
- fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...
[FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置] 安装pip3 install fastapi [all] pip3 install unicorn ...
- Django 静态文件处理
Django 静态文件处理 前言 配置 staticfiles STATIC_URL STATICFILES_DIRS STATIC_ROOT 前言 Django的静态文件不能像html那样直接放上图 ...
- doraemon的python(大更新) django静态文件的配置(出错多的地方)
### 12.2 静态文件的使用#### 12.2.1静态文件的配置和使用 settings.py```python STATIC_URL = '/static/' #别名 STATICFILES_D ...
最新文章
- 多线程编程 - GCD
- CSS三栏布局的四种方法
- Jmeter 在 beanshell 脚本中写日志
- 用OleDb写的一个导出Excel的方法
- java web随机抽取_java实现随机抽取奖品工具类
- 使用supervisord 来守护 nginx进程
- onclick传参数
- 关于TagHelper的那些事情——自定义TagHelper(内嵌TagHelper)
- 点餐系统ip地址_spring boot实战——微信点餐系统03:微信授权(用户授权),免费内网穿透(固定ip)...
- springcloud之Feign、ribbon设置超时时间和重试机制的总结
- mysql awk_awk 实用实例参考
- Bitvise SSH Client 无法连接服务器
- 以管理员身份打开cmd窗口
- [Maven实战-许晓斌]-[第二章]-2.1在Windows上安装maven
- 15.正则表达式扩展正则字符处理
- 铁道部网站扩容投诉与建议
- 01 公众号与公众平台
- 实时训练Real-Time Training 教程
- 【偶爱宋词】章良能·小重山
- 区别:KL散度,JS散度,Wasserstein距离(EMD)
热门文章
- python程序设计与应用第1章
- php4.3.x 5.2.x,XDEBUG for PHP 5.3.0
- python必须下载到c盘吗_python为什么要安装到c盘
- python django下载_简单了解django文件下载方式
- 暴雪机器人消防_油库发生大规模爆炸?暴雪机器人、移动水炮、举高喷射车,消防高科技现身现场!...
- 福师计算机应用基础期末,福师2015计算机应用基础》期末试卷A123
- jeecgboot配置文件_Jeecg-Boot 技术文档
- extmail html文件丢失,extmail/extman登录界面无法显示的故障解决
- Set E Interface
- 鸿蒙应用学习笔记01:搭建鸿蒙应用开发环境