Django学习笔记之入门

it2022-06-10  81

 

创建django项目创建app目录静态文件以及模板路径的配置第一个django程序模板渲染入门

一、创建django项目

首先执行pip3 install django,接下来有两种方式创建django项目:

第一种是在命令行中执行:django-admin startproject 工程名

第二种是直接使用pycharm,在新建项目的时候选择django,这种方式创建django项目的时候需要选择一个空目录

而且pycharm需要安装专业版的,社区版是没有这个功能的。

一个完整的django项目的目录结构如下:

项目名

 --------项目名

          -----  __init__.py

          ------settings.py#配置文件

          ------url.py#URL对应关系

          ------wsgi.py

---------manage.py#管理Django程序

---------static(自己创建的)#存放css,js等静态文件

--------templates#存放html等模板文件

--------db.sqlites#存放数据库信息

 

二、创建APP

因为一个django工程里面可能包括了很多子功能,所以可以在根目录下建立多个app目录

建立app的方式:python manage.py startapp app的文件名称

一个完整的app的目录结构如下:

app文件名

--------migrations #存放数据库的表结构的更改信息

--------__init__.py

-------__admin__.py #Django提供的后台管理

------apps.py#配置当前的app

------models.py#ORM,写制定类,通过命令创建数据库结构

------tests.py#单元测试

------views.py #业务代码

三、静态文件以及模板路径的配置

在编写第一个django程序之前,首先需要在django项目的同名目录下的settings.py进行以下配置:

1、配置模板的路径:

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', ], }, }, ]

2、配置静态目录:

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

配置好静态目录之后,在模板的html文件中就可以引入静态目录中的css文件,如下:

<link rel="stylesheet" href="/static/commons.css" />

需要注意的是,最好文件的存放路径就不要变,然后就按照上面这样子写就不会错。

四、第一个django程序

首先需要在django同名目录下的url.py中定义路由,url(url路径,views中对应的函数名)

然后需要在url中导入views,例如:

from django.contrib import admin from django.conf.urls import url from cmdb import views urlpatterns = [ # path('admin/', admin.site.urls), url('admin/',admin.site.urls), url('login/',views.login), url('home/',views.home) ]

接下来需要在app下的views.py中根据具体的业务逻辑定义视图函数,参数request是必须的,request中封装了很多东西

简要介绍一下:

①通过request.method可以知道页面提交的方式是get还是post

②如何获取数据:

如果页面是通过get提交的,例如用户在地址栏中输入?nid=123&name=alex,那么可以通过reques.GET.get('',None)获取请求发来的数据

如果页面是通过post提交的,也可以通过request.POST.get('',None)获取提交的表单中的信息

3、如何把数据渲染到页面:

# return HttpResponse("字符串") # return render(request, "HTML模板的路径") # return redirect('/只能填URL')

 四、模板渲染

1、{{变量名}}

在html文件中: 

<body> <div>{{current_user}}</div> </body>

对应的视图函数中,需要在return的时候使用render方式返回,在里面传入一个变量,并赋值:

def func(request): return render(request, "index.html", {'current_user': "alex"})

以上的代码执行结果就等价于:

<html> .. <body> <div>alex</div> </body> </html>

2、使用for循环,if等进行模板渲染

使用{% for n in 变量名%}开始,使用{%endfor%}结束,使用{%if ...%}开始,{endif}结束

html文件中的内容:

<html> .. <body> <div>{{current_user}}</div> <ul> {% for row in user_list %} {% if row == "alex" %} <li>{{ row }}</li> {% endif %} {% endfor %} </ul> </body> </html>

3、获取数组或者字典中的某个变量(***)

view视图函数中定义了几种变量:

def func(request): return render(request, "index.html", { 'current_user': "alex", 'user_list': ['alex','eric'], 'user_dict': {'k1': 'v1', 'k2': 'v2'}})

注意一下如何获取user_list中的第一个值,或者user_dict中的K1对应的值这种获取方式(用点的方式,和vue.js很像):

<html> .. <body> <div>{{current_user}}</div> <a> {{ user_list.1 }} </a> <a> {{ user_dict.k1 }} </a> <a> {{ user_dict.k2 }} </a> </html> </body>

另外一个结合for循环的例子:

render(request, "模板的文件的路径", {'obj': 1234, 'k1': [1,2,3,4],"k2": {'name': '张扬','age': 73}})

如何循环输出k2里面的每一个key,value

{% for row in k2.keys %} {{ row }} {% endfor %} {% for row in k2.values %} {{ row }} {% endfor %} {% for k,v in k2.items %} {{ k }} - {{v}} {% endfor %}

  

 

  

 

 

 

转载于:https://www.cnblogs.com/mesunyueru/p/9107701.html

相关资源:django学习笔记

最新回复(0)