【Django】Day2-Django入门

Django入门

Django入门

一.新建index页面

1.新建项目

使用manage.py创建一个blog这里会出现新的一个应用

python manage.py startapp blog
文件名 描述
init.py 告诉Python 这是一个包
apps.py 在新的Django 版本中新增,用于应用程序的配置。
admin.py 映射models 中的数据到Django 自带的admin 后台
models.py 数据模型——对应数据库的相关操作
tests.py 单元测试
views.py 视图函数(即MVC 中的控制器)——控制向前端显示哪些数据。
migrations 这是一个包,用于记录models中的数据变更

2.把这个应用加入到Django的项目中

在项目文件的setting.py中。将应用名称(blog)添加到元组的末尾,如下所示。

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
······
'blog',
)

3.新建一个urls

在项目的urls文件中配置我们blog应用的index页

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',views.archive),
    path('index/',views.index)
]

4.编写对应的index函数

在blog应用的view文件新建

def index(request):
    return HttpResponse("Hello Django!")

5.请求路径

在浏览器输入以下就可以访问

http://localhost:8000/index/
http://127.0.0.1:8000/index/

二.新建一个模板index页面

对于一个页面可以使用更加好的模块来展示,可以使用html展示

1.新建一个html

在对应目录创建templates/index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Django Page</title>
</head>
<body>
<h1>Hello Django!</h1>

</body>
</html>

2.修改view中返回数据

原先

def index(request):
    return HttpResponse("Hello Django!")

修改之后

from django.shortcuts import render
def index(request):
    return render(request,"index.html")

这里使用Django模块的render函数

Django 工作流

  • 1.urls.py 中urlpatterns添加路径,确定跳转的项目函数
  • 2.在项目的新增对应的函数
  • 3.在函数中加载已有 html文档

三.开发模式

MTV开发模式:也就是把数据和表现逻辑分割开的逻辑

MVC模式

Model-View-Controller(MVC):

  • Model 代表数据存取层,

  • View 代表的是系统中选择显示什么和怎么显示的部分

  • Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。

  • 但是在Django中使用的是MTV模式:
    是模型(Model)、模板(Template)和视图(Views),

四.新建一个Blog

1.新建一个博客模型

使用model 文件用于存放数据模型,这里使用了blog的模型

class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

这里新建了一个BlogPost类,并添加了博客里面的属性。

  • title:用CharField类型,并限制了最大长度
  • body:使用TextField类型
  • timestamp:使用dataTimeField 类型

2.Model转换成中间件

在项目cmd中输入

python manage.py makemigrations 

会出现以下结果

Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model BlogPost

可以看到blog项目新建了一个BlogPost的类

3.数据SQLite

Django默认的就是

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/tmp/mysite.db', # use full pathname to avoid confusion
}
}

3.生成blog的表

然后Django需要使用上面给出的链接信息来连接数据库,这里需要设置应用程序需要的表。

python manage.py syncdb

这里输入之后cmd表示syncdb命令不存在。因为Django1.9之后该命令被删除,所以,需要使用migrate命令替代syncdb

python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0001_initial... OK


4.注册数据库表

在admin账号登录之后是没有看到用户类的
需要在blog项目的admin文件中注册

from blog.models import BlogPost

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title','timestamp')

admin.site.register(BlogPost,BlogPostAdmin)

在之前的注册的模块是BlogPost,所以在admin的页面展示的也是BlogPost

5.配置html模板

在应用中新建一个archive.html文件用于存放模板

\blog\templates\archive.html

文件内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- archive.html -->
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
<hr>
{% endfor %}
</body>
</html>

6.配置urls路径

修改项目的urls路径

from blog.views import archive

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',archive)
]

7.虚假视图展示

在view文件中配置

def archive(request):
    post = BlogPost(title='mocktitle', body='mockbody',
                    timestamp=datetime.now())
    return render_to_response('archive.html', {'posts': [post]})

使用虚假视图验证之后发现没有问题就可以换成真实视图

8.真实视图展示

在view文件修改成

from blog.models import BlogPost

def archive(request):
    posts = BlogPost.objects.all()
    return render_to_response('archive.html', {'posts': posts})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章