创建一个django项目:django-admin startproject mysite
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
其中最外成mysite是你的项目名称,你可以更改。但是内部的mysite不能更改名称。因为它已经被视为一个Python包来使用了(由于__init__.py的存在,他会被识别为一个Python包)。
manage.py 用来管理Python项目的命令行工具
__init__.py 一个空文件,表明它所在的文件夹是一个Python包,不再是文件夹。
settings.py 项目配置文件,如果你要使用数据库,或者静态文件,模板文件,都需要在里面配置使用。
urls.py url声明,相当于网站的目录。
wsgi.py 作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
运行项目:python manage.py runserver
创建项目: python manage.py startapp pools
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
编写视图函数:views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
然后在pools中创建一个urls.py 输入:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
然后在mysite下面的urls.py中输入:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
这样的话,每个项目都有自己独立的url管理文件。不用担心mysite文件夹下的urls配置过多,而且不容易区分是哪个项目的url
也可以全部在mysite里面配置,但是如果项目过多,会不好管理。name属性是为了方便在模板中引用。
然后如果要使用数据库,进入到mysite下的settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库类型,用mysql就是backends.mysql
'NAME': 'mydatabase', # 要使用的数据库名称
'USER': 'mydatabaseuser', # 用户名
'PASSWORD': 'mypassword', # 密码
'HOST': '127.0.0.1', # 数据库地址(ip)
'PORT': '5432', # 数据库使用端口
}
}
然后运行命令:python manage.py migtate # 这条命令会在数据库里面给你自动创建一些供你使用的表。至于它会创建哪些表,它会找到settings.py文件中的INSTALLED_APPS
:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
然后使用django来创建模型,这里会用到models文件:
from django.db import models
class 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)
每个模型都被表示为django.db.models.Model的子类。定义的变量表示数据库里面需要生成的字段。每个字段的实例类型不一样,CharField
表示字符串类型,IntergerField表示整数类型, DateTimeField
表示日期时间,
TextField表示文本类型,FloatField表示浮点类型,AutoField表示自增类型,一般用于生成id,ForeignKey表示外键。由于类型不一样,所以需要不同的参数,常见的参数有:max_length=最大长度,primary_key=True/False是否为主键,null=是否允许为空。
然后模型完成后还需要在settings.py 中配置一下你的项目。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'pools'
]
然后运行命令:python manage.py makemigrations polls # 这个命令会使得Python检测你的models文件的修改,并准备一次迁移。然后运行:python manage.py migrate # 这个命令会往你数据库中插入字段。模板操作完成。(如果你修改了models.py中的字段名称,可以删除项目的migrations文件夹下的py文件,否则可能会有命名冲突)