保证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,静态文件配置相关推荐

  1. Django静态文件配置

    本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...

  2. 解决Django静态文件配置pycharm高光问题

    就困扰了我半天的Django静态文件配置问题 更改了setting 文件后 文件参考问题总会高亮让然觉得又错误怪怪的 所以索性直接眼不见心不烦 具体操作如下图: 就这样就可以啦 大功告成! 也顺便提一 ...

  3. 各种 django 静态文件的配置总结【待续】

    2019独角兽企业重金招聘Python工程师标准>>> 最近在学习django框架的使用,想引用静态css文件,怎么都引用不到,从网搜了好多,大多因为版本问题, 和我现在的使用的da ...

  4. Django之静态文件配置

    静态文件 了解静态文件配置之前,我们需要知道静态文件是什么? 静态文件其实指的是像css,js,img等一些被模板需要的文件. 如何在Django中配置我们的静态文件 1.建立static文件夹,将静 ...

  5. 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 ...

  6. Django静态文件处理、中间件及Admin站点

    Django静态文件处理.中间件及Admin站点 文章目录 Django静态文件处理.中间件及Admin站点 一.静态文件 1.简介 2.示例 3.配置静态文件 二.中间件 1.简介 2.示例 3.异 ...

  7. fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...

    [FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置] 安装pip3 install fastapi [all] pip3 install unicorn ...

  8. Django 静态文件处理

    Django 静态文件处理 前言 配置 staticfiles STATIC_URL STATICFILES_DIRS STATIC_ROOT 前言 Django的静态文件不能像html那样直接放上图 ...

  9. doraemon的python(大更新) django静态文件的配置(出错多的地方)

    ### 12.2 静态文件的使用#### 12.2.1静态文件的配置和使用 settings.py```python STATIC_URL = '/static/' #别名 STATICFILES_D ...

最新文章

  1. 多线程编程 - GCD
  2. CSS三栏布局的四种方法
  3. Jmeter 在 beanshell 脚本中写日志
  4. 用OleDb写的一个导出Excel的方法
  5. java web随机抽取_java实现随机抽取奖品工具类
  6. 使用supervisord 来守护 nginx进程
  7. onclick传参数
  8. 关于TagHelper的那些事情——自定义TagHelper(内嵌TagHelper)
  9. 点餐系统ip地址_spring boot实战——微信点餐系统03:微信授权(用户授权),免费内网穿透(固定ip)...
  10. springcloud之Feign、ribbon设置超时时间和重试机制的总结
  11. mysql awk_awk 实用实例参考
  12. Bitvise SSH Client 无法连接服务器
  13. 以管理员身份打开cmd窗口
  14. [Maven实战-许晓斌]-[第二章]-2.1在Windows上安装maven
  15. 15.正则表达式扩展正则字符处理
  16. 铁道部网站扩容投诉与建议
  17. 01 公众号与公众平台
  18. 实时训练Real-Time Training 教程
  19. 【偶爱宋词】章良能·小重山
  20. 区别:KL散度,JS散度,Wasserstein距离(EMD)

热门文章

  1. python程序设计与应用第1章
  2. php4.3.x 5.2.x,XDEBUG for PHP 5.3.0
  3. python必须下载到c盘吗_python为什么要安装到c盘
  4. python django下载_简单了解django文件下载方式
  5. 暴雪机器人消防_油库发生大规模爆炸?暴雪机器人、移动水炮、举高喷射车,消防高科技现身现场!...
  6. 福师计算机应用基础期末,福师2015计算机应用基础》期末试卷A123
  7. jeecgboot配置文件_Jeecg-Boot 技术文档
  8. extmail html文件丢失,extmail/extman登录界面无法显示的故障解决
  9. Set E Interface
  10. 鸿蒙应用学习笔记01:搭建鸿蒙应用开发环境