当前位置: 首页 > news >正文

Django基础

一、创建Django项目

1、创建project

django-admin startproject mysite

2、生成project的目录

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

3、其它常使用的命令

python manage.py startapp appname   #生成app
python manage.py runserver 0.0.0.0    #运行服务
python manage.py makemigrations     #数据库迁移
python manage.py migrate               #生成数据库表

二、项目配置

1、配置模板路径

TEMPLATE_DIRS = (
        os.path.join(BASE_DIR,'templates'),
    )

2、配置静态文件资源

STATICFILES_DIRS=(
    os.path.join(BASE_DIR,"statics"),
)

值得注意的是在创建项目时,settings中自动生成STATIC_URL = '/static/',它是引用名,代替STATICFILES_DIRS。

3、数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': '', #数据库名称
        'USER': '', #数据库用户名
        'PASSWORD': '', #数据库密码
        'HOST': 'localhost', #主机地址
        'PORT': '3306', #端口号
    }
}

在进行使用mysql数据库时注意的是需要在与settings.py文件同一级的__init__.py文件中写入:

import pymysql

pymysql.install_as_MySQLdb()

三、路由配置

1、路由分发

首先有一个总的路由系统,然后根据总的路由系统在进行每一个app的分发:

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),  #其中blog为app名字
]  

2、每一个app中的路由

每一个app中都有一个urls.py文件,其中的每一个路由都对应一个视图函数,当请求到来时,匹配对应的url并且交给对应的函数进行处理:

urlpatterns = [
    path('article/(\d{4})$/', views.artile,), 
    path('article/(?P<y>\d{4})/(?P<m>\d{2})/', views.artile_y),
    path('register/', views.register, name="reg" ),  
]

四、视图

当请求进入到视图后,就开始进行相应的处理:

def artile(request,year):
    return render(request,'index.html',{'year':year})

def artile_y(request,y,m):
    return render(request, 'index.html', {'year': y,'month':m})

def register(request):
    if request.method == 'GET':
        return render(request,'register.html')
    return HttpResponse('success!')

五、模板渲染

1、渲染后台返回的数据

视图返回的数据就会在模板上进行渲染:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>年份:{{ year }}</p>
<h1>年份:{{ month }}</h1>
</body>
</html>

2、模板引入静态文件

值得注意的是如果有静态文件需要引入,在模板文件内容的上方load staticfiles:

{% load staticfiles %}
<!DOCTYPE html>
...
<script src="{% static 'jquery-3.3.1.min.js' %}"></script>
...
</html>

3、模板中命名空间的使用

对于有命名空间的url,可以使用命名空间,而无需写url:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="{% url 'reg' %}" method="post">
...
...
</form>
</body>
</html>

 

转载于:https://www.cnblogs.com/shenjianping/p/11526291.html

相关文章:

  • 图形学学习推荐网址
  • 一条不归路
  • Java8 特性
  • 线程优先级
  • Django之template操作
  • 串口通信Rs232和TTL
  • C++:堆与栈区别
  • mysql的操作
  • matlab 绘图设置 (全)
  • 红包的原理
  • mathtype 修改公式 章节号 和编号
  • 论文阅读:Factorized Recurrent Neural Architectures for Longer Range Dependence
  • 论文 :审稿意见
  • 吴伯凡-认知方法论-原始舒适区=0认知
  • Django之Form操作
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • java8 Stream Pipelines 浅析
  • javascript 哈希表
  • mongo索引构建
  • Python中eval与exec的使用及区别
  • vue中实现单选
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 蓝海存储开关机注意事项总结
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微服务入门【系列视频课程】
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 线性表及其算法(java实现)
  • 因为阿里,他们成了“杭漂”
  • 赢得Docker挑战最佳实践
  • AI算硅基生命吗,为什么?
  • ​configparser --- 配置文件解析器​
  • #微信小程序:微信小程序常见的配置传值
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (6)添加vue-cookie
  • (8)STL算法之替换
  • (LeetCode) T14. Longest Common Prefix
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm码农论坛 毕业设计 231126
  • (黑马C++)L06 重载与继承
  • (十一)c52学习之旅-动态数码管
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)h264中avc和flv数据的解析
  • (转)Sql Server 保留几位小数的两种做法
  • (转)visual stdio 书签功能介绍
  • (转载)Linux 多线程条件变量同步
  • (状压dp)uva 10817 Headmaster's Headache
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net framework4与其client profile版本的区别
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调