zoukankan      html  css  js  c++  java
  • 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()            #拿到所有数据传给HTML
            return 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
  • 相关阅读:
    c++ --> 虚函数
    Algorithm --> 全排列
    Algorithm --> 矩阵链乘法
    STL --> set用法
    STL --> list用法
    Algorithm --> 最长公共子序列(LCS)
    Zookeeper使用实例——服务节点管理
    Zookeeper使用实例——分布式共享锁
    Zookeeper初探
    Java设计模式应用——备忘录模式
  • 原文地址:https://www.cnblogs.com/pdun/p/10714664.html
Copyright © 2011-2022 走看看