• 如何使用Python的Django框架创建自己的网站


      如何使用Python的Django框架创建自己的网站

      Django建站主要分四步:1、创建Django项目,2、将网页模板移植到Django项目中,3、数据交互,4、数据库

      1创建Django项目

      本人使用的是pycharm编辑器,打开pycharm,如下图点击左下角红框位置,选择terminal,然后在terminal窗口输入

      django-admin.py startproject myproject

      然后再输入

      python manage.py startapp myapp

      上面的myproject和myapp都是自己定义的工程名和APP名

      至此,Django项目已经建立完毕。

      2将网页模板移植到Django项目中

      1、在myapp文件下新建两个文件夹,static和templates,static文件夹放置网页模板的css、js以及其他文件夹,templates文件夹只放.html的文件

      2、对Django项目的四个文件进行修改,因为将模板移植到Django项目中,需要在模板文件中进行一些格式修改。

      setting.py

      在里面添加自己的APP,添加模板的文件夹路径

      'DIRS': [os.path.join(BASE_DIR,'templates')],

      url.py

      新加以下语句

      from django.urls import path

      from django.conf import settings

      from django.conf.urls.static import static

      from myapp import views

      然后再添加网页的路径

      path('login', views.login),

      

    在这里插入图片描述

      views.py

      定义一个响应函数,函数名必须和网页的xx.html前缀名相同

      def index(request):

      return render(request, 'index.html',

      xx.html

      在下添加下面语句,表示下面的模板由Django接管

      {% load static %}

      以下为Django下的一些语句格式例子

      {% for line in data1 %}

      {% if line.user == data2.user %}

      {% if line.psw == data2.psw %}

      {% endif %}

      {% endif %}

      {% endfor %}

      可以看出在路径和for循环if判断语句中都要用{% %}。

      3数据交互

      views.py

      首先定义一个list,如user_list[ ],用于存放数据

      数据的方法为POST,所以在响应函数中加一个判断语句

      def login(request):

      if request.method == "POST":

      username = request.POST.get("username", None)//将用户输入的数据存到变量中

      password = request.POST.get("password", None)

      user_list = {"user": username, "psw": password}

      return render(request, 'login.html', {"data1": user_list})//将数据送回到页面

      xx.html无锡看妇科医院哪家好 http://mobile.wxbhnkyy39.com/

      数据返回到页面后,通过for循环读取

      {% for line in data1 %}

      line.user = data1.user

      line.psw = data1.psw

      {% endfor %}

      4数据库的操作

      需要更改三个文件

      setting.py

      Django有自己自带的数据库

      DATABASES = {

      'default': {

      'ENGINE': 'django.db.backends.sqlite3',

      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), #Django自带的数据库

      }

      }

      models.py

      先创建models

      class UserInfo(models.Model):

      user = models.CharField(max_length=32)

      psw = models.CharField(max_length=32)

      只要动了models.py,就要在terminal中输入以下两个语句

      python manage.py makemigrations

      python manage.py migrate

      views.py

      新加下面语句

      from myapp import models

      给数据库写入数据

      models.UserInfo.objects.create(user="zhoupeng", psw="123456")

      读取数据库数据

      user_list = models.UserInfo.objects.all()

      可以直接在网页中读数据库进行操作

      在admin.py文件中加入以下语句

      from myapp.models import UserInfo

      admin.site.register(UserInfo)

      然后创建超级用户

      在terminal中输入

      python manage.py createsuperuser

      即可在http:/ /admin中对数据库进行操作

      至此,一个完整的Django项目就完成了。

      调式过程的心得

      1、调试过程出现任何bug首先看一下自己是不是有那里拼写错误

      2、有的时候调试很久,什么都没有错,但网页就是刷新不出来,但是过一段时间却自动好了,有可能是端口的问题,换个端口试一下

      3、中的login为点击submit时要跳转的页面,写错会出现page not found,对于method,有数据是为post,无数据是为get

      4、在url.py中 path(’’, views.login)和path(‘index’, views.index)的区别,前者的url为http:/…/后者为http:/…/index

      5、出现错误为“Local variable xxx referenced before assignment”,就是局部变量和全局变量的问题,在响应函数中加global xxx,或者直接将变量定义在函数里

  • 相关阅读:
    彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)
    linux服务器上tcp有大量time_wait状态的解决方法和原因解释
    mysql,既可以自己的字段相乘,也可以乘固定的字段
    vscode 滚动设置字体大小
    nodejs 定时任务 node-schedule 库
    Node.js中的环境变量
    js 打印错误堆栈
    springboot 返回的json中忽略null属性值,不传递
    idea跳转到指定行列快捷键
    Spring boot + MyBatis返回map中null值处理
  • 原文地址:https://www.cnblogs.com/djw12333/p/11654198.html
Copyright © 2020-2023  润新知