1.切换虚拟环境
在pycharm中的Terminal中打开, 如果不在django 环境中, 需要cd到django环境中, 然后输入 activate激活环境
2.创建一个django项目
(这种方式创建的项目,需要在项目里创建一个templates的文件夹,用来存放html文件, 并在settings.py里设置路径)
python manage.py startproject 项目名称
在settings.py里设置
创建app
python manage.py startapp app名字
运行项目
python manage.py runserver # 只能自己的主机访问 生成的网址是 127.0.0.1:8000
python manage.py runserver 0.0.0.0:8000 # 局域网的其他电脑也可以访问 生成的网址是 自己主机ip:8000
3.在写好数据模型后(models.py),生成数据迁移文件
python manage.py makemigrations
python manage.py migrate
4.在terminal里添加数据
先确定自己在django环境中
python manage.py shell
依次执行以下命令, Post是写好的数据模型
from django.contrib.auth.models import User
from blog.models impost Post
user = User.objects.get(username="admin")
添加数据, 初始化一个对象,并且进行赋值,
post=Post(title="first post",slug="first-post",body="post body",author=user)
post.save()
查询数据
post1 = Post.objects.get(slug='first-post')
post1
all_posts = Post.objects.all()
all_posts
a = all_posts.get(id=1)
a
5. 创建超级管理员
python manage.py createsuperuser
依次输入用户名,邮箱(选填),密码
6.settings.py里的配置
在django中还有一个命令框, 只需要输入命令,不需要输 python manage.py
------------------------------关于常用的一些模块/包----------------------------------------
urls.py里
from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
url(r'^index$', index, name='index'),
models.py里
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User # 使用django自带的用户模型
from django.urls import reverse
# reverse 方法通过名称和其他参数来构建url
例如 return reverse("blog:post_detail", args=[self.publish.year, self.publish.month, self.publish.day, self.slug])
views.py里
from django.shortcuts import render, HttpResponse, get_object_or_404 # get_object_or_404 如果匹配到,返回数据, 匹配不到返回404
from django.views.generic import ListView, DeleteView # 模型
from django.db.models import Q
from django.core.mail import send_mail
-------------------------------关于settings.py的一些配置-------------------------------
--------------------------添加其他的文件(从后台/数据库添加图片)----------------
settings.py里的配置
在最后添加
# 需要配置媒体路径, 如果不配置的话, 则只能在后台上传, 在页面中下载(加载)的话是失败的.
# 配置媒体文件的路由
MEDIA_URL = '/media/'
# 配置媒体文件目录
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 需要在项目里新建一个media文件夹,用来存放文件
admin.py里
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url
# serve专门用来处理返回文件的函数
from django.views.static import serve
from 项目名字 import settings
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^', include('MyOffice.urls')),
# path("myoffice", include('MyOffice.urls'))
# path 用来匹配资源路径, 第二个path,参数
# document_root 配置媒体文件资源路径
path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),
]
------------------------------------登录/登出常用的模块----------------------------------
views.py里的
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login # authenticate这个方法接收request对象,username,password三个参数,到数据库中去匹配,如果匹配成功,返回一个User数据对象, 否则返回None
from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView, PasswordChangeDoneView, PasswordResetView
# LoginView 处理登录表单填写和登录功能
# LogoutView 退出登录
# PasswordChangeView 处理修改密码的表单, 然后修改密码
# PasswordChangeDoneView 成功修改密码之后的执行的视图
# PasswordResetView 用户选择重置密码功能的视图, 生成一个一次性重置密码链接和对应的验证token, 然后发送邮件给用户
# login_required的使用
@login_required
def dashboard(request):
return render(request, "account/dashboard.html")
urls.py里的
from django.urls import path
from account.views import *
from django.contrib.auth import views
# views.LogoutView.as_view(), views.LoginView.as_view() 需要新建一个registration文件夹,然后重新内置文件,文件的名字按内置的名字起,也可以重写
# settings里配置
"""
LOGIN_REDIRECT_URL = "dashboard" # 如果没有指定next参数,登录成功之后重定向的url
LOGIN_URL = "login" # 用户需要登录的情况下,被重定向的url
LOGOUT_URL = "logout"
"""
urlpatterns = [
# path("login/", user_login, name="login"),
path("login/", views.LoginView.as_view(), name="login"),
path("logout/", views.LogoutView.as_view(), name="logout"),
path("", dashboard, name="dashboard")
]
在app里新建一个forms.py文件
from django import forms
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)