python web django

Django的模板语法,如下:

{{}} :用于变量替换。
{%for i in content%}{{i}}{%endfor%} : for 循环
{%extends "base.html"%} : 用于指定父模板文件
{%block name %} ··· {%endblock%} :用于指定被替换的内容,内容名称为 name.
{%if 条件%} .....{% elif 条件%} ....{%else%}... {%endif%} :用于 if 语句

常用的 ORM 查询操作:

ModelName.object.all() #返回 model 的所有数据集

ModelName.object.filter(**kwargs) #返回符合筛选条件的数据集

ModelName.object.exclude(**kwargs) #返回不符合筛选条件的数据集

ModelName.object.get(**kwargs) #用于查询单条记录

创建数据

# 第一种方式
# models.UserInfo.objects.create(username="root",password="123")
# 第二种方式
# obj = models.UserInfo(username='fzh', password="iajtag")
# obj.save()
# 第三种方式
# dic = {'username':'fgf', 'password':'666'}
# models.UserInfo.objects.create(**dic)

查询数据

# result = models.UserInfo.objects.all()  # 查询所有,为QuerySet类型,可理解成列表
# result = models.UserInfo.objects.filter(username="fgf",password="666")  # 列表
# result = models.UserInfo.objects.filter(username="fgf").first()  # 对象
# 条件查询。filter 相当于where查询条件,里面的","会组成and条件
# for row in result:  # 打印查询到数据。
#     print(row.id,row.username,row.password)

# 查看QuerySet类型具体做了什么事情,可以: print(result.query)

删除数据

# models.UserInfo.objects.all().delete()  # 删除所有
# models.UserInfo.objects.filter(id=4).delete()  # 删除所有

更新数据

# models.UserInfo.objects.all().update(password=8888)
# models.UserInfo.objects.filter(id=3).update(password=888888)

数据库(ORM)操作相关:
如果想要完全删除migrations(使用sqllite时),需要将所有缓存文件/夹都删掉
然后新建一个空的migrations

python manage.py makemigrations –empty (你的app名字)
python manage.py makemigrations
python manage.py migrate
解决!

ASP.NET MVC Filter 登录限制-类Python装饰器

想必学过Flask编写Web服务端的都对 @login_required 很熟悉吧,一个语句决定了访问者是否有权限访问当前页面.

那么疑问来了,ASP.NET MVC中是否有类似于Python装饰器一类的语法呢?

答案是有的,如果仅仅是权限以及登录确认的判断的话,ASP.NET MVC 有一个 AuthorizeAttribute 类,这个类的结构以及用法可以替代 @login_required,接下来编写实现代码.

首先新建一个ASP.NET MVC 项目,新建一个Filter文件夹,该文件夹下存放网站允许访问一类的类.

新建MyAuthorizeAttribute类,继承AuthorizeAttribute 类,重写AuthorizeCore和HandleUnauthorizedRequest方法.

第一个方法是授权检察,第二个方法是权限判断失败时执行的操作.

接下来实现当时间分钟是偶数时允许登录.

//MyAuthorizeAttribute.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication3.Filter
{
    public class MyAuthorizeAttribute :AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            return DateTime.Now.Minute % 2 == 0;  
        }
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            filterContext.HttpContext.Response.Redirect("/Home/ShowTip");

            //base.HandleUnauthorizedRequest(filterContext);  
        }  
    }
}
//HomeController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication3.Filter;

namespace WebApplication3.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [MyAuthorizeAttribute]
        public ActionResult ShowDetails2()
        {
            return View();
        }
        public ActionResult ShowTip()
        {
            return View();
        }  
    }
}