来自 python 世界,我们大量使用了tastypie 或 Django-Rest-framework 来创建 Rest API。
通过阅读Felix Geisendörfer 的《说服老板》,我注意到以下声明:
构建轻量级 REST / JSON api 是 node.js 真正闪耀的地方。其非阻塞 I/O 模型与 JavaScript 相结合,使其成为包装其他数据源(如数据库或 Web 服务)并通过 JSON 接口公开它们的绝佳选择。
当我尝试学习 Node.js 并找到使用现有和可靠模块(如 Django 的美味派)实现 REST API 的最佳方法时;我只是找不到基于模型自动处理这些操作(GET、PUT、POST、DELETE、PATCH)的 node.js 模块。
你会发现很多教程都在说如何实现一个基本的 rest api,但我没有找到可以在大型生产应用程序中使用的模块。(我发现Restify,mers ...)
你们都在用什么?现有模块还是您更喜欢开发自己的控制器来处理这些任务并手动创建自己的路由?
我来自 python / django 背景,其中一个简单的过程python manage.py makemigrations
就是生成我的迁移。
现在的问题是,对于 Ecto,我找不到这样的命令。看来我必须使用mix ecto.gen.migration
然后手动填充迁移。它不会自动检测我的模型中的更改,我必须手动填写。
您是否有任何想法如何几乎自动生成迁移(例如,如果我在现有模型中添加一个字段)。
我正在尝试使用Saltstack自动创建用户.
我创建了一个支柱conf:
users:
homer:
fullname: Homer Simpson
uid: 1007
gid: 1007
groups:
- sudo
- adm
crypt: $6H7kNJefhBeY
pub_ssh_keys:
- ssh-rsa ...
Run Code Online (Sandbox Code Playgroud)
在我的州,我使用以下内容:
{% for username, details in pillar.get('users', {}).items() %}
{{ username }}:
group:
- present
- name: {{ username }}
- gid: {{ details.get('gid', '') }}
user:
- present
- fullname: {{ details.get('fullname','') }}
- name: {{ username }}
- shell: /bin/bash
- home: /home/{{ username }}
- uid: {{ details.get('uid', '') }}
- gid: {{ details.get('gid', '') …
Run Code Online (Sandbox Code Playgroud) 我正在转向UI-Router
我的App路由器.我想嵌套状态如下:
$stateProvider
.state('app', {
url: '/app',
template: ' <div ui-view></div>',
authenticate: true
})
.state('app.state1', {
url: '/state1',
templateUrl: 'app/state1.html',
controller: 'State1Ctrl',
controllerAs: 'state1',
authenticate: true
})
.state('app.state2', {
url: '/state2',
templateUrl: 'app/state2.html',
controller: 'State2Ctrl',
authenticate: true
})
Run Code Online (Sandbox Code Playgroud)
我$state
叫app
他人是其他人的父母.它只包含一个<div ui-view></div>
模板.它不应该直接访问.我的意思是如果用户输入 /app
URL,他们应该被重定向到`app.state1``
如何阻止我的用户这样做?
我在多个地理位置有很多不同的机器。我需要从我的后端命令他们并从他们那里获取数据。我正在考虑将它们全部连接到rabbitmq amqps 连接,以启用我的机器的双向通信。
这是一个好方法吗?rabbitmq 是否足够安全来做到这一点?
我有一个基本问题,对新的Django开发人员有用.
我在Django中创建了自己的UserProfile.此UserProfile具有一个名为"type"的特定字段.这个字段可以有两个值(到现在为止可能更多):男性 - 男性/女性 - F:
from django.contrib.auth.models import User
GENDER = (
(M, 'Male'),
(F, 'Female'),
)
class UserProfile(models.Model):
user = models.OneToOneField(User)
type = models.CharField( max_length=2,
choices=GENDER,
default='F')
Run Code Online (Sandbox Code Playgroud)
基本上,我想允许访问限制访问或根据用户类型调整页面内容.到目前为止,我使用了一种非常基本的初学者方法,即在视图中测试用户类型,然后处理页面:
def OnePage(request):
if request.user.type == 'M':
....
else if request.user.type =='F':
....
Run Code Online (Sandbox Code Playgroud)
然后我还需要根据用户类型调整呈现的模板:男性用户不会拥有与女性用户相同的个人资料页面.
我相信有更好的方法可以做到这一点,但作为一个Django初学者,我很遗憾所有的Django可能性.所以如果你有任何最佳实践来实现这一点,请告诉我(显然我想要一个我可以在每个视图上使用的干代码!)
谢谢您的帮助.
当我有一个Django网站时,很容易监控我网站的不同部分(例如NewRelic):
但是知道我使用Angular.js框架移动到单页应用程序,我必须承认我不知道我能监视什么..
如果我的客户对该应用有疑问怎么办?我没有日志,因为它是客户端.如何知道我的所有用户,我的应用程序的行为?(响应时间,查询集性能......)
如果你有良好的实践,我真的很感兴趣.
PS:我读过如何监控单页网页应用程序,但没有发现它真的有用.特别适用于日志部分.
我开发了一个基于类的视图来呈现您可以在下面看到的元素列表:
class ConfirmBeforeRunTest(LoginRequiredMixinRedirect,ListView):
template_name = "app_testing_house/confirm_before_run.html"
# Redirect to login page if not auth
redirect_unauthenticated_users = True
# Options for ListView
model = Test
context_object_name = 'test_list'
def get_queryset(self):
return Test.objects.filter()
def post(self, request, *args, **kwargs):
return TestToRunPostProcessorView.as_view(request)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我希望能够在我的视图中处理 POST 请求,以便为我的查询集获取一些参数。我曾经读过一篇博客,说一个 CBV = 一个功能。所以我创建了另一个视图来处理所有 POST 过程:
class TestToRunPostProcessorView(FormView):
form_class = TestToRunForm
def form_valid(self, form):
# Process form
return self.render_to_response(context)
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用,我收到以下错误消息:
as_view() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
所以我认为return TestToRunPostProcessorView.as_view(request)
不正确,但我不知道为什么..
我有以下模型:
from model_utils.models import TimeStampedModel
class MyModel(TimeStampedModel):
....
name = models.CharField(max_length=100)
....
Run Code Online (Sandbox Code Playgroud)
该模型基于 Django Utils ( https://django-model-utils.readthedocs.org/en/latest/models.html#timestampedmodel ),它向我的模型添加created
和modified
字段。
我需要知道的是将 a 添加db_index
到我的模型的修改字段的方法。但我无法修改 TimeStampedModel 文件,因为它是外部依赖项的一部分。
您知道此类问题的任何简单解决方案吗?
谢谢你。
Django刚刚发布了他们的1.5版本.
它现在支持Python 3,我的问题确实非常简单:使用这个1.5版本,我还应该使用Python 2.7还是Python 3?我假设使用Python 3会出现第三方应用程序没有问题吗?
在你的情况下,你会做什么?
所以我在没有找到答案的情况下阅读了以下帖子:
我的模型使用JSONField来存储任意数据.
class Task(models.Model):
"""
Execution of a Test
"""
results = JSONField(max_length=1000, blank=True)
Run Code Online (Sandbox Code Playgroud)
在python shell中,我可以打印此字段,它呈现以下内容:
[{"name": "tata", "result": "toto"}]
Run Code Online (Sandbox Code Playgroud)
我修改脱水方法删除unicode,但我有以下结果:
**Dehydrate Method:**
def dehydrate_results(self, bundle):
results = json.dumps(bundle.obj.results)
return results
**Tastypie Result**
"results": "[{\"name\": \"Cash In\", \"result\": \"toto\"}]"
Run Code Online (Sandbox Code Playgroud)
我不能在我的javascript应用程序中使用此对象...也许你可以解释我如何从tastypie获得"正常"json输出:
**Wanted Tastypie Result**
"results": [{"name": "Cash In", "result": "toto"}]
Run Code Online (Sandbox Code Playgroud)
谢谢.
django ×6
angularjs ×2
javascript ×2
django-views ×1
elixir ×1
express ×1
iot ×1
node.js ×1
python ×1
python-2.7 ×1
python-3.x ×1
rabbitmq ×1
restify ×1
salt-stack ×1
state ×1
tastypie ×1