动画网站欣赏,开发app需要什么设备,电商网站建设与运营实训,招远做网站QDjango是一款由C编写、依托于Qt库的Web开发框架#xff0c;其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集#xff0c;帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango…QDjango是一款由C编写、依托于Qt库的Web开发框架其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango项目结构中存在db和http两部分db为Qt的ORM实现该模块包装一下可以作为简单的ORM库使用。 如果项目中不想SQL语句写的到处都是一个简单ORM库还是有必要的同时也能避免依赖某一种数据库。以下工程为简单包装QDjango-db的简单实现。当然个人不建议使用该模块主要QDjango已经很久不维护了可以使用ODB来做相同的工作。
// 以下为QDjango-db的简单包装// 创建templatetypename Tbool createHandle() {QDjango::registerModelT();return QDjango::createTables();}// 增加void addHandle(std::functionvoid() f) { f();}// 删除void delHandle(std::functionvoid() f) { f();}// 更改templatetypename Tbool modifyHandle(const QVariantMap fields) {return QDjangoQuerySetT().update(fields);}// 查询不能嵌套查询只能简单查询,复杂的可以研究QDjangoQuerySet类templatetypename TT* selectHandle(const QStringList slParam, QDjangoWhere::Operation op) {Q_ASSERT(slParam.size() 2);return QDjangoQuerySetT().get(QDjangoWhere(slParam[0], op, slParam[1]));}// 清表templatetypename Tbool clearHandle() {return QDjangoQuerySetT().remove();}// 删表bool dropHandle() {return QDjango::dropTables();}class User : public QDjangoModel
{Q_OBJECTQ_PROPERTY(QString username READ username WRITE setUsername)Q_PROPERTY(QString first_name READ firstName WRITE setFirstName)Q_PROPERTY(QString last_name READ lastName WRITE setLastName)Q_PROPERTY(QString email READ email WRITE setEmail)Q_PROPERTY(QString password READ password WRITE setPassword)Q_PROPERTY(bool is_active READ isActive WRITE setIsActive)Q_PROPERTY(bool is_staff READ isStaff WRITE setIsStaff)Q_PROPERTY(bool is_superuser READ isSuperUser WRITE setIsSuperUser)Q_PROPERTY(QDateTime date_joined READ dateJoined WRITE setDateJoined)Q_PROPERTY(QDateTime last_login READ lastLogin WRITE setLastLogin)Q_CLASSINFO(username, max_length30)Q_CLASSINFO(first_name, max_length30)Q_CLASSINFO(last_name, max_length30)Q_CLASSINFO(password, max_length128)
public:User(QObject *parent 0);QString username() const;void setUsername(const QString username);QString firstName() const;void setFirstName(const QString firstName);QString lastName() const;void setLastName(const QString lastName);QString email() const;void setEmail(const QString email);QString password() const;void setPassword(const QString password);// flagsbool isActive() const;void setIsActive(bool isActive);bool isStaff() const;void setIsStaff(bool isStaff);bool isSuperUser() const;void setIsSuperUser(bool isSuperUser);// datesQDateTime dateJoined() const;void setDateJoined(const QDateTime dateJoined);QDateTime lastLogin() const;void setLastLogin(const QDateTime lastLogin);
private:QString m_username;QString m_firstName;QString m_lastName;QString m_email;QString m_password;bool m_isActive;bool m_isStaff;bool m_isSuperUser;QDateTime m_dateJoined;QDateTime m_lastLogin;
};if (qDjangoHandle::getSingleInstance().initialiseDatabase()){if (qDjangoHandle::getSingleInstance().createHandleUser()) {// addqDjangoHandle::getSingleInstance().addHandle([](){User user;user.setUsername(root);user.setFirstName(Li);user.setLastName(si);user.setPassword(1234);if (!user.save()) {qDebug() save failed;}});// modifyQVariantMap vmap;vmap[username] root1;qDjangoHandle::getSingleInstance().modifyHandleUser(vmap);// queryQStringList slCondition;slCondition username root1;User* p qDjangoHandle::getSingleInstance().selectHandleUser(slCondition, QDjangoWhere::Equals);if (p ! nullptr)qDebug() p-firstName() p-lastName();}}