我正在使用Django Rest Framework和AngularJs构建一个应用程序.我使用Django-rest-auth进行身份验证,但是,我无法进行设置.无论如何,我试图用我的项目设置这个应用程序.我意识到我需要安装django-rest-auth-registration才能让它运行,所以我按照这个文档做了以下事情:
我跑了命令
pip install django-rest-auth
和
pip install django-allauth
任何我的settings.py看起来像这样:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 3rd party apps
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
'allauth',
'allauth.account',
'rest_auth.registration',
# My app
'myapp',
]
Run Code Online (Sandbox Code Playgroud)
我还添加了身份验证后端,context_processors和正确的URL.
但是,当我尝试迁移时,我的终端会抛出以下错误:
RuntimeError:模型类django.contrib.sites.models.Site不声明显式的app_label,也不在INSTALLED_APPS的应用程序中.
为什么我会收到此错误,如何解决此问题以迁移我的项目?谢谢!
我正在使用一个简单的模型,该模型的属性将该对象的所有数据存储在 JSONField 中。将其视为将 NoSQL 数据传输到我的 PostgreSQL 数据库的方式。有点像这样:
from django.contrib.postgres.fields import JSONField
class Document(models.Model):
content = JSONField()
Run Code Online (Sandbox Code Playgroud)
每个Document对象在其content字段中(或多或少)具有相同的键,因此我正在使用这些键查询和排序这些文档。对于查询和排序,我使用的是 Django 的annotate()函数。我最近遇到了这个:
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/indexes/
我也知道 PostgreSQL 使用 JSONB,这显然是可索引的。所以我的问题是:我能否content以某种方式索引我的字段以加快复杂查询的读取操作?如果是这样,那么我该怎么做?我链接的文档页面没有示例。
任何使用过twitter bootstrap的人都知道可以使用img-responsivehtml img标签中的类来响应图像.但是,这些图像占据了分区宽度的100%.
如何在保持原始宽度的同时使图像响应?
对于一个项目,我在后端使用Django,在前端使用AngularJs.
基本上,我想要的是仅在url开头时运行Angular应用程序projectkeeper/.
换句话说,假设我的网站是example.com.我希望角度应用程序为URL运行example.com/projectkeeper/dashboard/,example.com/projectkeeper/projects/依此类推,但不是example.com/about/.
希望我已经清楚了.无论如何,为了做到这一点,我正在使用我的代码执行以下操作:
urls.py
urlpatterns = [
url(r'^projectkeeper/$', TemplateView.as_view(template_name='base.html')),
]
Run Code Online (Sandbox Code Playgroud)
在模板base.html中,我明显地提到了我的角度应用程序.对于角度路由,我做了以下事情:
myapp.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/dashboard/', {
title: 'Dashboard',
controller : 'DashboardController',
templateUrl : 'static/app_partials/projectkeeper/dashboard.html'
})
.otherwise({ redirectTo : '/' });
}]);
Run Code Online (Sandbox Code Playgroud)
所以,理想情况下,我认为example.com/projectkeeper/#/dashboard/将从我的角度应用程序运行DashboardController.但是,情况并非如此,我只得到一个空页面,这意味着路由不正确.
对此有何解决方案?正如我之前所说的,我想要的是仅在url开头时运行Angular应用程序projectkeeper/.
所以我在同一个项目中运行了2个应用程序.
我的文件结构如下:
/project_codebase
/project
__init.py
settings.py
urls.py
wsgi.py
...
/app1
...
/app2
...
manage.py
Run Code Online (Sandbox Code Playgroud)
所以,我出于某些奇怪的原因为我的基目录设置了一个不同的名称(也就是说,它以codebase结尾).希望这不是问题.
在我的settings.py中,我有这个:
INSTALLED_APPS = [
...
'app1',
'app2',
]
Run Code Online (Sandbox Code Playgroud)
好的,所以在我的models.py(来自app2)中,我可以轻松地从app1导入模型from app1.models import *,但是,当我from app2.models import *在models.py(来自app1)中使用时,我得到一个ImportError.
对此有何解决方案?
如果可能的话,我想在路线定义中指定我的标题.通常在<head><title>浏览器标题栏中指定和显示的内容.
我的项目设置如下:
main.js
import Vue from 'vue'
import App from './App.vue'
import VeeValidate from 'vee-validate';
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(VeeValidate);
Vue.use(ElementUI);
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App)
}).$mount('#app')
Run Code Online (Sandbox Code Playgroud)
router.js
import Vue from 'vue'
import Router from 'vue-router'
import Skills from './components/Skills.vue'
import About from './components/About.vue'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'skills',
component: Skills,
meta: { title: 'Skills - MyApp' } // <- …Run Code Online (Sandbox Code Playgroud) 在我的模型中,我有以下类:
class Topic(models.Model):
name = models.CharField(max_length=25, unique=True)
class Content(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
topic = models.ForeignKey(Topic, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我的序列化器是这样的:
class TopicSerializer(serializers.ModelSerializer):
class Meta:
model = Topic
fields = ('name')
class ContentSerializer(serializers.ModelSerializer):
topic = TopicSerializer(read_only=True)
class Meta:
model = Content
fields = ('title', 'body', 'topic')
Run Code Online (Sandbox Code Playgroud)
好吧,所以在我的网址文件中,我有以下模式:
urlpatterns = [
...
url(r'^api/topic_detail/(?P<name>[a-zA-Z0-9-]+)/content_list/$', views.topic_content_list, name='topic_content_list'),
...
]
Run Code Online (Sandbox Code Playgroud)
因此,当用户说/api/topic_detail/sports/content_list/,我们获得具有体育主题的所有内容的列表.现在我想的是,如果我们POST以下数据到上述网址,那么内容对象是否使用自动与体育有关的话题场创建.
我试图在我的观点中以下列方式执行此操作:
@api_view(['GET', 'POST'])
def topic_content_list(request, name):
try:
topic = …Run Code Online (Sandbox Code Playgroud) 这个问题是不言自明的。我在这里找到了这个文档:
https://www.postgresql.org/docs/current/view-pg-timezone-names.html
但是,它并没有真正提到如何获取所有支持的时区的列表。我怎样才能做到这一点?
我的models.py看起来像这样:
import random
random_string = str(random.randint(10000, 99999))
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
Run Code Online (Sandbox Code Playgroud)
当我在admin中添加内容时,会生成该范围内的整数并将其作为其默认值放入charfield.从那里,我可以简单地在charfield中添加更多单词.但是,我当前设置的问题是每次添加新文章时整数都保持不变.我想生成并插入随机整数,因为我使用unique_url字段基本上找到我的每个特定对象,我期待很多内容,所以添加随机数通常会确保每个内容都有一个kind unique_url.
因此,我正在寻找一个系统,每次使用管理面板添加新内容时生成随机整数,并将其作为字段的默认值.在Django中这样的事情是否可能?
我真的在文档中找不到任何可靠的东西。可以说我正在做这样的事情:
from django.db.models.signals import post_save
from django.dispatch import receiver
class Item(models.Model):
total_score = models.IntegerField()
def set_score(self):
...
class Review(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
score = models.IntegerField()
@receiver(post_save, sender=Review)
def my_handler(sender, **kwargs):
sender.item.set_score()
Run Code Online (Sandbox Code Playgroud)
我想做的是set_score()每当保存评论对象时调用项目对象。这是原子的吗?我绝对希望整个事情是原子的,因为保存评论但项目总分未更新的情况会导致错误。
django ×7
python ×3
postgresql ×2
angularjs ×1
css ×1
django-admin ×1
django-apps ×1
html ×1
javascript ×1
vue-router ×1
vue.js ×1
vuejs2 ×1