本文共 5318 字,大约阅读时间需要 17 分钟。
安裝django
在cmd命令中输入:
python -m pip install Django
安装指定版本:
pip install django==2.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
查看版本:
python -m django --version
在manage.py为程序的入口,同时可以在manage.py文件里设置一个主配置mysite.settings文件:
if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv)
在目录中如下:
启动项目配置:
根据在主配置里添加的Url配置,来指定配置的根url ,Settings.py文件里的ROOT_URLCONF 属性表示根url,定义Url时,直接使用列表urlpatterns来定义路由。在urls.py文件里包含了路由的路径和指定的模块。
from django.contrib import admintfrom django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('app/', include('edu_saas_app.urls')), ]模块为/app,包含了edu_saas_app模块下的urls.py文件,include属性包含了其他urls文件
pycharm的前进后退快捷键, 后退 ctr+alt+<- 向左的方向键 ,前进 ctr+alt+-> 向右的方向键, pycharm的对齐快捷键: ctr+alt+L
向左缩进: Shift + Tab, 向右缩进: Tab。
在主模块的settings.py文件的指定属性DATABASES里定义加载的数据库,default为默认加载的数据库,另外需要指定数据库的引擎、
用户名、密码等信息。DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '*****', 'USER': 'root', 'PASSWORD': '****', 'HOST': '****', 'PORT': 3306 }, 'admin': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '***', 'USER': 'root', 'PASSWORD': '***', 'HOST': '****', 'PORT': 3306 }}
1) 查看django版本
在cmd命令行里输入:
python -m django --version
2) 在指定的目录下创建一个Project,通过命令来生成Py文件:
django-admin startproject mysite
执行完成后,会生成以下文件:
mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py
3) 在Project里创建一个投票应用:
python manage.py startapp polls
4) 启动服务器: ,指定端口号为8080:
python manage.py runserver 8080
models.py为模型层,用来与数据库的实体进行映射的。 定义完成后,需要在主模块里讲模块添加到INSTALLED_APPS={}里面去:
等式左边的字段最终会映射到数据库中字段名,等式右边的括号属性映射到数据库的字段属性,其中null=True表示该字段可以为空,默认为False,表示非空。
class User(models.Model): username=models.CharField(max_length=20,verbose_name="用户名",null=True) password=models.CharField(max_length=20,verbose_name="密码",null=True) def __str__(self): return "用户测试表"
另外可以使用Meta给表命名,如果不使用Meta,那么默认的表明为: 模块名_User
class User(models.Model): username=models.CharField(max_length=20,verbose_name="用户名",null=True) password=models.CharField(max_length=20,verbose_name="密码",null=True) def __str__(self): return "用户测试表" class Meta: verbose_name="用户表" verbose_name_plural="用户表" db_table="sys_user"
添加Meta后,需要重写 python manage.py makemigrations, python manage.py migrate。
注: 在创建model时,字段名称应尽量避免与模型API名称冲突,如clean,save or delete等。
class Entry(models.Model): # 有一个外键,blog_id,会直接关联到Blog表。 blog = models.ForeignKey(Blog, on_delete=models.CASCADE) headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateField() mod_date = models.DateField() ##多对多关联关系,author表与entry表存在多对多的关系,通过entry_id和author_id来关联 authors = models.ManyToManyField(Author) number_of_comments = models.IntegerField() number_of_pingbacks = models.IntegerField() rating = models.IntegerField() def __str__(self): return self.headline
Entry表有一个外键blog_id, 同时与Author的Model对应的数据库表进行多对多的关联,通过entry_id和author_id来进行关联。
注:设置外键时一般设置on_delete=models.CASCADE, 表示删除外键为级联删除,删除该行的同时,并删除包含ForeignKey的对象。
在models里建立好模型后,需要先生成迁移文件,然后再执行迁移文件里的脚本。
生成迁移文件的命令:python manage.py makemigrations
执行完毕后,会在migrations目录下生成一个迁移文件:
python manage.py migrate
执行成功后,会在数据库里生成一个myapp_user表,myapp为指定的模块名。
注: 当你向INSTALLED_APPS添加新的应用时,需要迁移,先 python manage.py makemigrations, 然后再使用python manage.py migrate 来迁移。
需要在urls.urlpatterns={} 指定path和views
如果是一个请求的业务逻辑,那么路由导指定的类下处理业务逻辑:path('dump_resource', DumpResource.as_view()),
如果是返回页面的话,需要将views先导进来, from . import views,然后在views.py里定义HttpResponse:
from django.shortcuts import render# Create your views here.返回给前端页面from django.http import HttpResponsedef index(request): return HttpResponse("hello word,you are at the poll index")
使用HttpResponse返回内容给前端。
django需要自己在对应的类里,添加请求方式的方法,并调用自身的方法。
from django.http import HttpResponsefrom requests import Responsefrom rest_framework.views import APIViewclass InsertUser(APIView): def get_or_create(self, request): print("插入一名员工!") ## do something print("插入完毕!") return HttpResponse("Some data") def get(self, request): return self.get_or_create(request) def post(self, request): return self.get_or_create(request)
get请求方式也可以直接使用get(self,request):
class SelectUser(APIView): def get(self,request): print("查询员工信息!") user=User.objects.all() print("查询完毕!") return HttpResponse(user)
post 也可以同样的使用post(self,request)
在使用的时候,直接添加到主模块的__init__.py文件里初始化一下就可以:
转载地址:http://hkwb.baihongyu.com/