django基础配置

  1. List item

安装django

python.exe -m pip install --upgrade pip

创建项目的指令

django-admin startproject 项目名称

$ cd 项目名称
$ python3 manage.py runserver 0.0.0.0:5000
python3 manage.py startapp 创建应用

如:python3 manage.py startapp hids_01_test
在 settings.py 中配置应用, 让此应用能和整个项目 融为一体

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hids_01_test',
]

settings.py 文件配置


True 表示开发环境中使用 调试模式(用于开发 中)
设置允许访问到本项目的网络地址列表

DEBUG = Trueip

ALLOWED_HOSTS = ['127.0.0.1', 'ip']

http://ip:5000/admin/

中文 : “zh-Hans”
中国时区 : “Asia/Shanghai”

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

配置路由

views.py下配置

from django.http import HttpResponse

def hids_log(request):
    html = "<h1>hello</h1>"
    return HttpResponse(html)

urls.py下配置

from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hids_log/', views.hids_log),
]

访问:
ip:5000/hids_log/

在这里插入图片描述

django应用及分布式路由

创建应用
如:python3 manage.py startapp hids_01_test
在 settings.py 中配置应用, 让此应用能和整个项目 融为一体

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hids_01_test',
]

配置主路由:urls.py

from django.urls import  include

urlpatterns = [
    path(' hids_01_test/', include('hids_01_test.urls')),
]
include(‘应用名.urls’)

配置应用路由:urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('commit_log/', views.commit_log),
    path('commit_hids_log/', views.commit_hids_log),
]

配置应用views.py

from django.shortcuts import render
from django.http import HttpResponse
def commit_log(request):
    html = "<h1>hello  hids_01_test commit_log</h1>"
    return HttpResponse(html)

def commit_hids_log(request):
    html = "<h1>hello  hids_01_test commit_hids_log</h1>"
    return HttpResponse(html)

访问链接看结果
ip:5000/hids_01_text/commit_log/
在这里插入图片描述

ip:5000/hids_01_test/commit_hids_log/
在这里插入图片描述

模板的配置

创建模板文件夹 项目名/templates
配置settings.py内的
TEMPLATES变量对应的

'DIRS': [os.path.join(BASE_DIR, 'templates')],

在templates下新建html文件,如com.html

<body>
    com html
</body>

配置主路由 urls.py

path('com_html/', views.com_html),

配置views.py

from django.shortcuts import render
def com_html(request):

    return render(request, 'com.html')

访问:
http://ip:5000/com_html/
在这里插入图片描述

模板的继承

模板继承可以使父模板的内容重用,子模板直接继承父模板的全部内容并可以覆盖父模板中相应的块
定义父模板中的块 block标签
标识出哪些在子模块中是允许被修改的
block标签:在父模板中定义,可以在子模板中覆盖

{% block block_name %}
定义模板块,此模板块可以被子模板重新定义的同名块
覆盖
{% endblock block_name %}

继承模板 extends 标签(写在模板文件的第一行)
子模板继承语法标签

{% extends '父模板名称' %}
如:
{% extends 'base.html' %}
子模板 重写父模板中的内容块
{% block block_name %}
子模板块用来覆盖父模板中 block_name 块的内容
{% endblock block_name %}

重写的覆盖规则
不重写,将按照父模板的效果显示
重写,则按照重写效果显示
注意
模板继承时,服务器端的动态内容无法继承

如:
父模板 Navigation_Tmplate.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {% block title_html %}
    <title>Navigation_Tmplate</title>
    {% endblock title_html %}
</head>
<body>
    {% block head_html %}
    <h3>Navigation_Tmplate head_html</h3>
    {% endblock head_html %}

    {% block body_html %}
    <h3>Navigation_Tmplate body_html</h3>
    {% endblock body_html %}

    {% block tail_html %}
    <h3>Navigation_Tmplate tail_html</h3>
    {% endblock tail_html %}
</body>
</html>

子模板subtemplate.html

{% extends 'Navigation_Tmplate.html' %}


{% block title_html %}
<title>subtemplate</title>
{% endblock title_html %}

{% block body_html %}
<h3>subtemplate body_html</h3>
{% endblock body_html %}

访问
http://ip:5000/base_view/
在这里插入图片描述

http://ip:5000/sub_view/
在这里插入图片描述

App应用下新建模板

在这里插入图片描述

Views.py内配置

def hids_log(request):
    return render(request, 'hids_01_test/hids_log.html')

hids_log.html内配置

{% extends  'Navigation_Tmplate.html' %}

{% block title_html %}
<title>hids_log</title>
{% endblock title_html %}

{% block body_html %}
<h3>hids_log body_html</h3>
{% endblock body_html %}

http://ip:5000/hids_01_test/hids_log/
在这里插入图片描述

配置静态文件

settings.py文件内

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

项目根目录下新建static文件夹
在这里插入图片描述

引用静态文件

{% load static %}

实现导航栏

http://127.0.0.1:5000/base_view/
在这里插入图片描述

http://127.0.0.1:5000/hids_01_test/hids_log/
在这里插入图片描述

下拉导航栏
在这里插入图片描述

引用方式:

Urls.py路由:

urlpatterns = [
    path('base_view/', views.base_view, name="base_view_url_name"),
]

在html中引用的三种方式:

<!-- 不带‘/’的相对地址 -->
<a class="nav-link" href="../../base_view">主页面</a>
<!-- 带‘/’的相对地址 -->
<a class="nav-link" href="/base_view">主页面</a>
<!-- url反向解析版本 -->
<a class="nav-link" href="{% url 'base_view_url_name' %}">主页面</a>

在views.py中引用(反向解析版本)
调用django中的reverse方法进行反向解析:

# url反向解析版本
from django.http import HttpResponseRedirect
from django.urls import reverse
url = reverse("base_view_url_name", args=[], kwargs={})
return HttpResponseRedirect(url)

上传文件

配置文件的访问路径和存储路径
在settings.py中配置

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

需要额外配置主路由:urls.py

主路由中添加 路由
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

针对403解决方案

方案一:在html中添加

{% csrf_token %}

方案二:在views.py对应函数上添加装饰器

from django.views.decorators.csrf import csrf_exempt, csrf_protect
@csrf_exempt
def hids_log(request):
	pass

访问:
http://127.0.0.1:5000/hids_01_test/hids_log/
在这里插入图片描述

文件存储路径:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值