django 笔记

https://www.runoob.com/django/django-first-app.html

1,首先安装pip install django    设置环境变量等,OK就可以建站了

  1,1  DJANGO-ADMIN startproject mysite这就建立了目录,目录里面有MANAGER.PY这是用来管理站点的

    1,1,1建立 了MYSITE目录,里面有MANAGER.PY  有MYSITE 目录

        建立的目录是mysite

                -mysite
                  -init

                  setting;url;wsgi  最外层有一个MANAGE.PY

  1,2  PYTHON MANAGE.PY runserver 127.0.0.1:8001  这样就可以把站点运行起来   默认8000端口

2,用PYCHARM打开站点,打开django程序

3,路由文件urls.py,里面urlpatterns,列表里面加一个URL,加上一个函数名字,不用加(),      函数需要需要引用HTTPRESPONSE   ,from django.shortcuts import HttpResponse;   def index(request):  return HttpResponse("ok")

4,创建APP就是创建一个业务,比如  一个主站,一个后台管理系统,创建方法只能是命令行(windows,MAC可以),python manage.py startapp xxxx,     一般情况下 我们的函数代码不应该直接写入URLS里面,而是应该放到对应的APP目录里面的VIEWS。然后引入包,在改一下路径views.home就可以了          

  4,1MIGRATIONS     里面记录表结构所发生的变化(数据库)数据库操作记录。修改表结构的记录(就是)

  4,2  _INIT__文件在python2.0必须要有  但是3.0 就可有可无了。   因为  只有 有__init.py__   有这个标识就会认为是包(2.0)

  4,3  ADMIN.PY  DJANGO为我们提供的后台管理模块    可以自动

  4,4  APPS  配置当前APP的

  4,5  MODELS  创建表的修改表用的  ORM写指定的类,通过命令创建数据库结构

  4,6  TESTS  单元测试

  4,7  VIEWS  业务代码(真正写代码的地方)

  4,8  关于TEMPLATES如果用了RENDER    这个时候会自动从TEMPLATES里面找文件读取,可是 有部分会出现没有发现TEMPLATES问题 ,在网上找到的原因是没有配置SETTING文件      解决方案是吧DIRS 列表增加字段(3,7   DJANGO忘了什么版本的)

      
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
View Code

   4,9  关于静态文件比如一个CSS文件、JS文件引用的方法,并不能常常规引用,因为我们的路由文件URLS里没有配置,但是也不能有几个就写几个列表元素进去,正确的做法是把他放到一个目录里面,在SETTINGS里面配置,比如把文件放到了/STATIC/里面

STATIC_URL='/static/'
STATICFILES_DIRS=(
     OS.PATH.JOIN(BASE_DIR,"static'),   #这个逗号记得写上       
)

  4,10  总结,创建完成站点后一般我们先配置1模板路径,2静态目录.

  4,11  关于提交页面,ACTIONS里面,如果写的是原网页地址这个提交后会返回错误(跨站访问失败,好像就是这么叫),处理的方法是,找到SETTINGS配置注释掉MIDDLEWARE   列表里面的DJANGO.MIDDLEWARE.CSRF.cSRFvIEWmIDDLEWARE

  4,12  request里面包含了用户发过来的请求,因为POST提交之后是以字典方式提交所以 我们的INPUT 标签里的内容 要加上NAME属性  要不 你没有NAME:VALUES结构

      

      
if request.method=='POST':
    user=request.POST("user")
    password=request.POST("password")
    print(user,password)
return render.(request,"login.html")

#但是这种方式会出现问题,因为POST提交过来一个字典就会出现字典长错的地方,没有找到的话,程序就报错了,所以应该改一下用GET的方式找字典的VALUE 找到了就是有,没有找到就是None
if request.method=='POST':
    user=request.POST.get("user",None)
    password=request.POST.get("password",None)
    print(user,password)
return render.(request,"login.html")
###如果要让用户跳转网页的话需要引入新方法import django.shortcuts import redirect 
if request.method=="POST":
    user=request.POST.get("username",None)
    password=request.POST.get("password",None)
    if user=='root' and password=='123':
        return redirect("http://www.baidu.com")
#其实return render(request,"login.html")后面还可以再加一个参数其实就是字典的KEY  比如return render(request,"login.html",{"error_msg":error_msg})   然后在templates的Login.html里面的{{error_msg}}   就会被替换成KEY的VALUE
View Code

     如果LOGIN里面的ACTION里面内容是/LOGIN     那么URLS里面也不要加/  就是LOGIN.HTML也不要加       DJANGO会自动加/   保持一致   要不然会报错  找不到文件

  4,13  在HTML里面拿python程序里面的数据,PYTHON的语法会稍微改变

<table>
    {% for row in user_list %}
          <tr>
                    <td>{{row.username}} </td>
            </tr>
  {% endfor %} </table>

  4,14  路由系统(urls),视图函数(VIEWS),

原文地址:https://www.cnblogs.com/xupanfeng/p/11525823.html