美文网首页python
django总结(配置的流程)

django总结(配置的流程)

作者: _narcissus | 来源:发表于2019-02-23 11:34 被阅读30次
  • 1 新建项目,勾选django框架

自动生成的那个项目是主项目,而我们要做自己的项目。所以要生成自己的子项目,idea的terminal中输入:

  python manage.py startapp 项目名字  #初始化自己的项目(例如我的file就是子项目)
terminal位置

然后在settings.py中配置子项目

  INSTALLED_APPS 添加自己新建的项目名
  • 2 现在可以写连接数据库的一系列配置,也可以写html文件。这里我们就先把html网页画好,然后再连接数据库。
    html文件放在templates目录下;如果有图片,则需要建一个static目录来放它(注意:static与templates是同级目录)

    并且在settings.py中写入配置
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static')
]
  • 3 接下来做数据库的配置了(数据库的创建,python连接数据库的配置等)
    使用django框架是不需要写数据库表的,而是由框架生成,所以只需要建好数据库就行
    记得先开启mysql服务
    win+s搜索cmd,右键管理员运行,输入net start mysql

    ·建数据库的方式就多了去了(cmd,idea工具,navicat等),随便选一个就行
show databases;
create database djangotest default character set utf8;

· 修改settings.py中数据库连接的配置(默认是sqlite3)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangotest', #数据库名
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}
  • 4 通过django框架生成数据库表
    models.py中写数据库模型,注意写外键的方式,这也决定了uid保存的是一个对象,而不是主键id值,这也导致了后面拿id值很容易出错!
from django.db import models
# Create your models here.
# 
class Userinfo(models.Model):
    email=models.CharField(max_length=50,unique=True)
    password=models.CharField(max_length=50)
    nickname=models.CharField(max_length=50)
    mobile=models.CharField(max_length=32,unique=True)
    birthday=models.DateField()
    createtime=models.DateTimeField(auto_now_add=True)

class MessageInfo(models.Model):
    message=models.CharField(max_length=2000)
    score=models.DecimalField(max_digits=19,decimal_places=2,default=2)
    messagetime=models.DateTimeField(auto_now_add=True)
    useful=models.IntegerField(default=0)
    useless=models.IntegerField(default=0)
    uid=models.ForeignKey('Userinfo',on_delete=models.CASCADE)
#on_delete=models.CASCADE保证了主键数据被清除时,外键的相关数据也会被清除。避免了垃圾数据的产生

在idea的terminal中输入

  python manage.py makemigrations    #自动化生成迁移文件
  python manage.py migrate    #自动化生成数据库表

这样数据库表就自动建好了

数据库表
数据库表字段(数据是后来添加进去的)

如果第二条命令出错,那么可能是最新版本django不支持旧mysql的问题,对django降级后就ok了。terminal输入

  pip install django==2.0.0 -i https://pypi.douban.com/simple

  • 5 到这里为止网页已经写好了,存网页数据的数据库也搞定了。下面就需要做网页的相关跳转以及功能了
    我们知道打开网页都是通过url来打开的,所以需要配好网页的url(然而子项目没有urls.py这个文件,所以要自己手动创建。)。由于file是我们的子项目,所以需要在主项目的urls.py中指定使用子项目的urls.py
    在主项目的urls.py最后添加
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('file/',include('file.urls'))
]
  • 6 现在来配置首页(先定个小目标:做出个首页压压惊)
    在子项目的urls.py中添加(配置url地址,并调用 views.py对这个url请求进行处理)
from django.urls import path
from . import views
urlpatterns=[
    path('index/',views.index)
]

配置views.py,对url请求进行处理。(这里就是当输入http://127.0.0.1:8000/file/index/这个地址请求时,就返回一个渲染的index.html网页)

from django.shortcuts import render,redirect
def index(request):
    return render(request,'index.html')

好了,我们运行这个项目之后,首页就可以通过地址来访问了

  • 7 如果需要配置局域网内访问:(可选)




    然后在setting.py配置
    ALLOWED_HOSTS = ['*']
    

在idea的terminal中输入:

python manage.py runserver 0.0.0.0:8000
  • 8 接下来做网页的跳转
    如何实现网页的跳转呢?我们是不是需要点击啥,然后给服务器发送一个请求?目前知道的给网页发送请求的方式有两种:
    • a标签的网页链接
    • button标签的submit(提交)属性
      所以点击的要么是a标签,要么是一个button标签
      下面就来做登录页面的跳转(通过a标签来做。ps:名字取错了)
html网页的a标签中指定跳转地址
子项目urls.py中配置链接需要调用的方法,来对请求进行处理
对请求进行处理:渲染注册页面
点击登录之后就可以跳转这个页面了
  • 9 下面要做的是填写登录信息,并登录跳转回首页。想想都麻烦:需要将网页上填写的数据发送给服务器;然后需要从数据库里拿数据与填写的数据进行对比,看是不是正确的;如果正确就跳转主页,不正确就刷新页面并需要重新填写。(写了一上午,饿。。。。等外卖中)
    首先是将网页的数据提交给数据库,前面已经用过a标签发送请求的方法了,下面就用button来发送请求。
    button又没有a标签那样的链接怎么发送请求给服务器来提交数据呢?其实是通过表单的链接来提交数据的,所以先配置html网页的form表单
<body>
<form action="" method="">
{% csrf_token %}  #添加保护机制代码
</form>
</body>

mthod的传值方式分为post(隐式)和get(显式)
action后面是一个链接(必须有最后斜线),通过配置子项目urls.py地址请求views.py处理


signin.html 子项目urls.py
对请求的处理方法
  • 10 写了半天,总算写完了这一步了。当信息都填写正确后,就又回到首页了,但是这次回到首页是带着登录用户身份的。


    带着牌子的

    至于说这个是怎么拿到的,就是上面的session存的email值啊。

这么写的
  • 11 现在来写评论了(想吐槽不?)----如何把网页的数据存到数据库里?

看见session了没,真的挺有用的。这里就需要判断是不是用户登录了,没登陆是发布了评论的。点发布评论之后就跳转评论页面了,一样的套路就不啰嗦了。(a标签写一个链接,urls给链接指定使用那个方法,方法做出处理)



吐槽现场

当评论写完后,点击发表评论,就发送一个请求。通过form标签给出响应地址,这个地址通过urls.py的配置,指定使用views.py中的发表评论方法。


怎么存数据到数据库里?这里有很重要的知识点了
  • 12 发表评论后,首页应该把评论都显示出来。可是怎么刷出所有评论?或者说首页一加载就要刷出所有信息。可以在index方法中获取所有数据,然后将数据传给首页。都是前面说过的知识点了



    html中for循环的写法
    刷出所有评论
  • 13 后面还有一个点赞有用和没有用的功能。包含了问号传参与更新数据库的写法
    从网页获取数据的方式:
    1. 通过input标签的name属性来传值 post或者get都可以
      post=request.POST
      var=post.get('name值')
    2. 如果不是input标签的就可以用问号传参的方式了 这个获取数据就只能用get来得到
      在html需要传值的后面添加 ?变量名称
      get=request.GET
      get.get('问号后面的变量名称')


      问号传参
def useful(request):
    get=request.GET #问号传参用get取值
    uid=get.get('uid')
    msg=MessageInfo.objects.filter(id=uid)
    point=msg[0].useful
    point+=1
    msg.update(useful=point)
    return redirect('/file/index')

越写越不想写,因为知识点实在是太分散了,不通过整个网页的制作流程来说的话就太乱了。好了,到这里所有知识点都包含进去了。

相关文章

网友评论

    本文标题:django总结(配置的流程)

    本文链接:https://www.haomeiwen.com/subject/xsyuyqtx.html