zoukankan      html  css  js  c++  java
  • python学习日记——django基础

    零、环境搭建

    1.python3的安装
    #wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
    #tar -zxvf Python-3.6.6.tgz
    #cd Python-3.6.6
    #./configure --prefix=安装路径
    #make&&make install
    2.pip3的安装
    yum install python3-pip
    3.Django框架安装
    pip3 install django
    4.sqlite升级

    一、基础

    1.创建django项目(即下载/部署web框架代码)
    命令:django-admin startproject mysite
    生成名为mysite的工程
    目录结构
    mysite
      mysite
        settings.py //
        urls.py //
        wsgi.py //
      manage.py
    2.通过manage.py文件管理项目
    命令:python manage.py startapp blog
    创建了名为blog的应用
    目录结构
    mysite
      blog
        admin.py //django提供的后台管理系统
        apps.py //django的生成app名称的文件
        models.py //操作数据库使用
        tests.py //单测使用
        views.py //存放各种函数
      mysite
        settings.py //django项目相关配置(应用、数据库等)
        urls.py //url分发
        wsgi.py //对请求(or响应)按特定规则进行封装
      manage.py
      templates //存放模板文件,从views中获取数据并回显
      static //存放css、js、img等静态文件

    番外:os.path.join(路径,文件)——返回根据不同操作系统拼接的文件路径
    元组中需要注意一下逗号问题
    STATIC_URL = '/static/' //静态文件路径的别名,按照此处的路径才能找到文件
    STATICFILES_DIRS=( //静态文件的根目录配置
      os.path.join(BASE_DIR,"static"),
    )
    3.render(渲染)方法——template.render(Context({"key1":value1,"key2":value2}))
    return render(请求对象,模板文件名,数据)
    def demo(request):
      value1="我的值会被传到网页上"
      value2="我的key值需要与页面中引用的地方相对应"
      return render(request,"index.html",{"key1":value1,"key2":value2})
    番外:模板中数据引入<h1>{{key1}}</h1>
    模板中文件引入<script src="{%static 'jquery-3.1.1.js'%}"></script>
    return render(request,"index.html",local())——此时模板中可以使用该函数中变量的值
    return redirect("/login/")——路由重定向,会改变浏览器地址栏的网址,重走新路由的渲染加载流程
    4.url控制
    urlpatterns = [
      path(正则,函数,别名),
    ]
    url中分组:用小括号括起路径中的参数,参数会按顺序传递到函数中
    无命名分组:
    2.0之前的版本
    path('admin/(d{4})$',view.fun)
    2.0之后的版本
    path('articles/<int:year>/<path:path>/<str:str>/', views.fun),
    def fun(request,year){...} //此处的year的命名可以任意替换
    有命名分组:
    2.0之前的版本
    path('admin/(?P<year>d{4})/(?P<month>d{2})',view.fun)
    2.0之后的版本
    re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[w-_]+)/', views.article_detail),
    def fun(request,year,month){...} //此处的year与month的命名不可改变
    别名:通过{% url '别名'%}方式渲染绝对路径

    url分发:url("blog/",include('blog.urls'))——以blog开头的路径需要进入blog应用下urls文件中去匹配(先匹配blog,后面的路径进入blog.urls去匹配,如:blog/article中,blog目录下urls文件中需要配置url("article",views.article))

    二、model(数据库相关)

  • 相关阅读:
    Codeforces Round #595 (Div. 3) A,B,C,D
    计算几何板子题【2019牛客国庆集训派对day7——三角形和矩形】【多边形相交的面积】
    [POJ]POJ1753(dfs)
    [POJ]POJ2965(dfs)
    洛谷 P1772 [ZJOI2006]物流运输 题解
    简单概率与期望
    洛谷 P3802 小魔女帕琪 题解
    用树状数组实现的平衡树
    【模板】扩展中国剩余定理(EXCRT)
    新博客开通通知
  • 原文地址:https://www.cnblogs.com/ftxy/p/12007104.html
Copyright © 2011-2022 走看看