小编sum*_*mit的帖子

如何自定义django表单标签

class permForm(forms.Form):
    def __init__(self, data=None, **kwargs):
        super(permForm, self).__init__(data, **kwargs)

        for item in list(AdminMenu.objects.filter(parent_id=0)):
            self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title)
            for childitem in list(AdminMenu.objects.filter(parent_id=item.id)):
                arr=[]
                arr.append(str(item.id))
                arr.append(str(childitem.id))
                self.fields['menu_%s' % '_'.join(arr)] = forms.BooleanField(label=childitem.title)
Run Code Online (Sandbox Code Playgroud)

这将返回

类别:复选框

添加类别:复选框

列表类别:复选框

食物:复选框

添加Fooditems:复选框

列出Fooditem:复选框

表格:复选框

添加表格:复选框

列表:复选框

用户:复选框

查看用户:复选框
如何将其显示如下

类别:复选框

添加类别:复选框

列表类别:复选框

食物:复选框

添加Fooditems:复选框

列出Fooditem:复选框

表格:复选框

添加表格:复选框

列表:复选框

用户:复选框

查看用户:复选框

我想让父母分类标签大胆地从孩子那里辨认出来.可能?我不想使用硬编码的形式

forms django customization label

6
推荐指数
1
解决办法
5177
查看次数

扩展 Django 用户权限

我只想列出用户获得许可,所以我只制作了一个自定义模型,如下所示

from django.db import models
from django.contrib.auth.models import  Permission,User

class Mycustomuser(User):
    class Meta:
        permissions = (
            ('users','users'),
            ('view_user', 'View user'),
        )
Run Code Online (Sandbox Code Playgroud)

在视图中我只是简单地调用

items=Mycustomuser.objects.all()
Run Code Online (Sandbox Code Playgroud)

它仅返回 4 的用户 ID。

我这样做是因为我使用 django Guardian 获得了以下许可

task = MyCustomuser.objects.create()
joe = User.objects.get(username__exact='admin')
assign('view_category', joe, task)
Run Code Online (Sandbox Code Playgroud)

现在我想在调用 MyCustomuser 时检查该权限。

authentication django permissions extend

5
推荐指数
1
解决办法
5319
查看次数

使用命令行界面停止laravel服务器

我只是尝试在shell脚本中自动化laravel进程,如(Start,Stop).要启动laravel服务器,我在shell文件中使用php artisan serve.

我试图使用命令停止laravel服务器.但我很奇怪,我没有看到任何命令来停止服务器.我曾经使用Ctl + C来停止服务器或关闭命令提示符.

1.任何laravel命令停止服务器?

  1. 我已经使用shell文件启动了laravel服务器,该文件在启动后退出.

我怎么能阻止他们呢?我没有任何命令提示运行此进程退出服务器.

terminal sh command-line-interface laravel laravel-5

5
推荐指数
2
解决办法
3万
查看次数

Laravel播种导致空时间戳

所以,我对语言表(播种者LanguageTableSeeder)如下:

DB::table('languages')->insert([
    'name'        => 'English',
    'flag'        => '',
    'abbr'        => 'en',
    'script'    => 'Latn',
    'native'    => 'English',
    'active'    => '1',
    'default'    => '1',
]);

    $this->command->info('Language seeding successful.');
Run Code Online (Sandbox Code Playgroud)

但这导致数据库中created_atand updated_at字段为Null。我抬头一看运前UsersTabeSeeder和改变了我的LanguageTableSeeder马赫完全一样的格式:

DB::table('languages')->delete();

$languages = [
    [
        'name' => 'English',
        'flag' => '',
        'abbr' => 'en',
        'script' => 'Latn',
        'native' => 'English',
        'active' => '1',
        'default' => '1',
    ],
];

foreach ($languages as $language){
    Language::create($language);
}
Run Code Online (Sandbox Code Playgroud)

这也造成了created_atupdated_at字段为空这是奇怪的,因为当我在用户表中我的数据查找基础,这些created_atupdated_at …

laravel eloquent laravel-seeding laravel-5.4

5
推荐指数
1
解决办法
3821
查看次数

基于时区的碳上数秒之间的差值

我想找出不同时区2次之间的差异。我的服务器基于悉尼,我想找到给定时间与当前时间(基于珀斯)之间的时差(以秒为单位)

    echo $tz = Carbon::now('Australia/Perth');
    echo "<br>";
    $local='2017-04-11 12:39:50';
    echo $emitted = Carbon::parse($local);
    echo "<br>";
    echo "diff from carbon->";
    echo $diff = $tz->diffInSeconds($emitted); 
    echo "<br> diff from Normal->";
    echo  $diff1 = strtotime($tz) - strtotime($emitted);
Run Code Online (Sandbox Code Playgroud)

当我使用diffInSeconds它时,相差2小时,看起来本地化没有考虑,但strtotime($tz) - strtotime($emitted)给出了理想的结果。我错过了什么吗?

php datetime laravel php-carbon

5
推荐指数
1
解决办法
8401
查看次数

在Laravel队列/重命名作业表中自定义作业和作业表

当我尝试php artisan queue:table 它给了我以下错误

  [InvalidArgumentException]                   
  A CreateJobsTable migration already exists.  
Run Code Online (Sandbox Code Playgroud)

这是因为我已经将迁移命名CreateJobsTable为其他目的.我无法重命名此表和迁移.有没有办法将迁移重命名为CreateJobsQueueTable或某些相关的东西?

我们可以使用'queue:table'重命名artisan创建的jobs表吗?

php laravel laravel-queue

4
推荐指数
1
解决办法
2816
查看次数

ORM for mysql now() - Laravel 4

我有以下sql

select * from bids where deleted_at is  null 
and  publication_date <= now() and open_date >= now()   
Run Code Online (Sandbox Code Playgroud)

我想用ORM写它

   $bids = Bid::where('publication_date','<=','now()')->where('open_date','>=','now()')->get();
Run Code Online (Sandbox Code Playgroud)

它不起作用,然后重写如下

$bids=DB::select(DB::raw('select * from bids where deleted_at is  null and  publication_date <= now() and open_date >= now()'));
Run Code Online (Sandbox Code Playgroud)

如何在ORM上面写上面的查询,我认为now()是给出了问题

php mysql laravel eloquent laravel-4

3
推荐指数
1
解决办法
2269
查看次数

在Laravel中设置加密密钥会导致注销

我需要用于后续Crypt::encrypt()Crypt::decrypt()调用的密钥,但仅限于当前请求.

    Crypt::setKey('1');
    $pin_code   = Crypt::encrypt($pin_codes[$key]);
Run Code Online (Sandbox Code Playgroud)

//它进行加密然后自动注销

可能是什么问题?

php encryption mcrypt laravel

3
推荐指数
1
解决办法
1324
查看次数

使用button type ="submit"而不是input - laravel

我需要在按钮标签上有令人敬畏的字体图像.所以我不能用 <input type="submit">

<button type="submit" class="btn btn-success">
                <i class="fa-trash"></i> delete
</button>
Run Code Online (Sandbox Code Playgroud)

在laravel上查看

{{ Form::open(array('method' 
=> 'DELETE', 'route' => array('admin.states.destroy', $value->id))) }}                       
                            {{ Form::submit(HTML::decode(FA::icon('trash')), array('class'
 => 'actions-line icon-trash','onclick'=>'return confirm("Are you sure?")')) }}
                        {{ Form::close() }}
Run Code Online (Sandbox Code Playgroud)

这不是在按钮内部渲染html

什么是正确的方法?

php laravel font-awesome blade laravel-4

3
推荐指数
1
解决办法
7577
查看次数

登录后保持会话 - selenium - javascript

我正在尝试使用 selenium web driver 和 node js 自动化几个页面。我能够登录,但登录后我想使用由网络驱动程序启动的相同会话,以便我可以在会话保护页面上进行自动测试。这是我的尝试

async function login(){
    Let  d =  await new Builder()
                        .forBrowser('chrome')
                        .build();
    await d.get('https://demo.textdomain.com/')
    await d.findElement(By.id('username')).sendKeys('admin ')
    await d.findElement(By.id('password')).sendKeys('admin');
    await d.findElement(By.css('button[type="submit"]')).click();
    d.getPageSource().then(function(content) {

            if(content.indexOf('Welcome text') !==-1 ) {
             console.log('Test passed');
             console.log('landing page');
             d.get('https://demo.textdomain.com/landingpage') //this is still going to login page as i cannot use the previous session 
            } else {
                console.log('Test failed');
                return false;
            }
            //driver.quit();
        });

}

login();
Run Code Online (Sandbox Code Playgroud)

我登录后不小心丢弃了浏览器。

javascript selenium automation webdriver promise

3
推荐指数
1
解决办法
2449
查看次数