• 创建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 %}