> 文档中心 > django入门(超详细)

django入门(超详细)


学习目标:django初阶

  • 创建项目
  • 开发服务器
  • 创建投票应用程序
  • 写下你的第一个视图
  • 数据库设置
  • 创建模型
  • 激活模型
  • 使用 API
  • 介绍 Django 管理员

学习内容:

快速安装django:

在此之前,确定已经安装完成python

 pip install Django

查看django的版本号

python -m django --version

创建项目

django-admin satrtproject 项目名称

成功创建

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

manage.py:一个命令行实用程序,可让您以各种方式与此 Django 项目进行交互。您可以阅读 django-admin 和 manage.pymanage.py中的所有详细信息。
内部mysite/目录是您项目的实际 Python 包。它的名称是 Python 包名称,您需要使用它来导入其中的任何内容(例如mysite.urls)。
mysite/init.py: 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果您是 Python 初学者,请阅读官方 Python 文档中有关包的更多信息。
mysite/settings.py:此 Django 项目的设置/配置。 Django 设置会告诉你设置是如何工作的。
mysite/urls.py:这个 Django 项目的 URL 声明;由 Django 驱动的站点的“目录”。您可以在URL dispatcher中阅读有关 URL 的更多信息。
mysite/wsgi.py: 为您的项目提供服务的 WSGI 兼容 Web 服务器的入口点。有关更多详细信息,请参阅如何使用 WSGI进行部署。

开发服务器

python manage.py runserver

创建应用程序

python manage.py startapp 应用程序名称

写出第一个试图view

在views.py中编写

from django.http import HttpResponse
def index(request):

return httpResponse(“Hello,word”)

这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。
为了创建 URLconf,请在 polls 目录里新建一个 urls.py 文件。你的应用目录现在看起来应该是这样:

polls/    __init__.py    admin.py    apps.py    migrations/ __init__.py    models.py    tests.py    urls.py    views.py

在 polls/urls.py 中,输入如下代码:

from django.urls import pathfrom . import views urlpatterns = [path('',views.idnex,name='index'),#这个name是映射到views.index]

下一步是要在根 URLconf 文件中指定我们创建的 polls.urls 模块。在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

from django.contrib import adminfrom django.urls import include,pathurlpatterns = [path('polls/',include('polls.urls')),path('admin/',admin.site.urls),]

执行
python manage.py runserver #验证路由是否修改成功

数据库配置

现在打开 项目/settings.py 这是一个包含Django项目设置的python模块

  1. 通常sqlite为默认数据库
  2. 也可以使用自定义数据库(mysql、Oracle…)

sqlite数据库

DATABASES = {   'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': 'mydatabase',   }}

Mysql数据库或者其他数据

DATABASES = {    'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '3306',    }}

创建model.py类

通过定义还需要将app名称放入settings.py中

from django.db import modelsclass Question(models.Model):    question_text = models.CharField(max_length=200)    pub_date = models.DateTimeField('date published')class Choice(models.Model):    question = models.ForeignKey(Question, on_delete=models.CASCADE)    choice_text = models.CharField(max_length=200)    votes = models.IntegerField(default=0)

在文件mysite/settings.py中子INSTALLED_APPS项式路径后,它看起来像这样:

INSTALLED_APPS = [
‘polls.apps.PollsConfig’,
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘app名称’
]

python manage.py makemigrations polls


API

我们使用这个命令而不是简单的使用“Python” 是因为manage.py会设置DJANGO_SETTINGS_MODULE环境变量,这个路径是 Django 可以根据mysite/settings.py文件来设置 Python 包的导入的。

>>> from polls.models import Choice, Question  # 导入相应的数据类#系统中还没有问题。>>> Question.objects.all()  #查找到question中的所有数据,返回一个对象#创建一个新的数据# Support for time zones is enabled in the default settings file, so# Django expects a datetime with tzinfo for pub_date. Use timezone.now()# instead of datetime.datetime.now() and it will do the right thing.>>> from django.utils import timezone>>> q = Question(question_text="What's new?", pub_date=timezone.now())# Save the object into the database. You have to call save() explicitly.>>> q.save()# Now it has an ID.>>> q.id1# Access model field values via Python attributes.>>> q.question_text"What's new?">>> q.pub_datedatetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=)# Change values by changing the attributes, then calling save().>>> q.question_text = "What's up?">>> q.save()# objects.all() displays all the questions in the database.>>> Question.objects.all()<QuerySet []>

在model.py中还存在很多内置的方法
例如:

def unicode(self):

return self.username

class Meta():

db_table=“表名”