博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django基础(一)安装、路由、配置数据源、数据迁移、请求方式
阅读量:116 次
发布时间:2019-02-27

本文共 5318 字,大约阅读时间需要 17 分钟。

1. 安装django,django程序的入口在哪儿?  

        安裝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)

           在目录中如下:

               启动项目配置:

2. 怎么去找一个请求? 请求是怎么映射的?

       根据在主配置里添加的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文件

3.  pycharm常用快捷键(对齐、缩进)

       pycharm的前进后退快捷键, 后退 ctr+alt+<-  向左的方向键 ,前进 ctr+alt+-> 向右的方向键, pycharm的对齐快捷键: ctr+alt+L

向左缩进: Shift + Tab, 向右缩进: Tab。

4. django怎么配置数据源?

     在主模块的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    }}

5. 怎么使用django命令去创建一个Project,并在Project里创建一个应用并把它给启动起来?

     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

6. 怎么使用django去创建一个model?

       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等。

 

7.怎么去创建一个外键? 怎么去建立表与表之间多对多的关系?

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的对象。

8. 怎么使用数据迁移?

     在models里建立好模型后,需要先生成迁移文件,然后再执行迁移文件里的脚本。

     生成迁移文件的命令:

python manage.py makemigrations

     执行完毕后,会在migrations目录下生成一个迁移文件:

    

     在使用如下命令执行脚本到数据库:

    python manage.py migrate

     执行成功后,会在数据库里生成一个myapp_user表,myapp为指定的模块名。  

   

     :  当你向INSTALLED_APPS添加新的应用时,需要迁移,先 python manage.py makemigrations, 然后再使用python manage.py migrate 来迁移。

9. 怎么定义路由的页面?

   需要在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返回内容给前端。

10. 怎么去定义一个Http请求的请求方式, GET or POST?

         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)

 

11. 怎么安装其他的包?例如PyMysql?

      

  在使用的时候,直接添加到主模块的__init__.py文件里初始化一下就可以:

  

转载地址:http://hkwb.baihongyu.com/

你可能感兴趣的文章