小编Huz*_*yed的帖子

如何从 Django 表单中删除必需的属性

我想从 HTML 表单中删除必需的属性。它应该从服务器端给出这个字段是必需的错误。以前我使用 required self.fields['group_name'].required=False。但它不会为空白或空数据给出错误。然后我开始知道use_required_attribute,但我不知道它以及如何使用它。

class GroupForm(forms.ModelForm):
    use_required_attribute = False
    class Meta:
        model = Groups
        fields = ['group_name', 'group_description', 'group_status']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-forms django-views

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

Python 3.5 中的 F 字符串无效语法

我知道那F Strings是在Python 3.6. 为此,我收到了错误 -Invalid Syntax

DATA_FILENAME = 'data.json'
def load_data(apps, schema_editor):
    Shop = apps.get_model('shops', 'Shop')
    jsonfile = Path(__file__).parents[2] / DATA_FILENAME

    with open(str(jsonfile)) as datafile:
        objects = json.load(datafile)
        for obj in objects['elements']:
            try:
                objType = obj['type']
                if objType == 'node':
                    tags = obj['tags']
                    name = tags.get('name','no-name')
                    longitude = obj.get('lon', 0)
                    latitude = obj.get('lat', 0)
                    location = fromstr(F'POINT({longitude} {latitude})', srid=4326)
                    Shop(name=name, location = location).save()
            except KeyError:
                pass    
Run Code Online (Sandbox Code Playgroud)

错误 -

location = (F'POINT({longitude} {latitude})', srid=4326)
                                           ^
SyntaxError: …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

在Django REST Framework中代替主键发送不同的字段

serializers.py

class MovieSerializer(serializers.ModelSerializer):

    class Meta:
        model = Movie
        fields = [
            'popularity',
            'director',
            'genre',
            'imdb_score',
            'name',
        ]  
Run Code Online (Sandbox Code Playgroud)

views.py

class MovieList(generics.ListCreateAPIView):
    queryset = Movie.objects.all().order_by('-id')[:10]
    serializer_class = MovieSerializer
    permission_classes = (IsAuthenticated,)

    def list(self, request):
        queryset = self.get_queryset()
        serializer = MovieSerializer(queryset, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        data = request.data
        if isinstance(data, list):
            serializer = self.get_serializer(data=request.data, many=True)
        else:
            serializer = self.get_serializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

我这样发送数据,它可以正常工作。

{
   "popularity": 83.0,
   "director": "Victor Fleming",
   "genre": [
      1,
      2,
      3, …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

为模型提供初始数据 - Django

我想在 Django 模型中输入默认值。就像我创建了一个Role模型

class Role(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=100)

    class Meta:
        verbose_name = _('role')
        verbose_name_plural = _('roles')
        db_table = "role"

    def __str__(self) : 
        return self.name
Run Code Online (Sandbox Code Playgroud)

我想在迁移时输入默认值 -makemigrationsmigrate.

应输入示例数据 -

name - Super Admin
Description - This is Super Admin
name - Admin
Description - This is Admin
name - Manager
Description - This is Manager
Run Code Online (Sandbox Code Playgroud)

这将帮助我完成手工工作。谢谢你。

django django-models

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

将变量从视图传递到表单 Django

基本上我正在向用户发送电子邮件password and username。我可以使用self.cleaned_data.get('email'). 但问题是我不知道如何从视图中获取密码,我在视图中设置了随机密码。所以请帮助我从 views.py 到 forms.py 中获取随机密码def send_email

表单.py

class UserRegisterForm(forms.ModelForm):
        email = forms.EmailField()
        first_name = forms.CharField()
        last_name = forms.CharField()

        class Meta:
            model = User
            fields = ['first_name','last_name', 'email']

        def send_email(self):
            name = self.cleaned_data.get('first_name')
            username = self.cleaned_data.get('email')
            to_email = self.cleaned_data.get('email')
            password1 = # Get Password from view
Run Code Online (Sandbox Code Playgroud)

视图.py

def register(request):
    if request.method == 'POST':
        ur_form = UserRegisterForm(request.POST)
        pr_form = UserProfileForm(request.POST, request.FILES)
        user_role = 0
        if ur_form.is_valid() and pr_form.is_valid():
            new_user = ur_form.save(commit=False)            
            new_user.username = new_user.email …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-forms django-views

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

响应 CreateAPIView DRF

我想要CreateAPIView这样的回复

Response(
            {
                'status': status_code.HTTP_200_OK,
                'message': 'Testimonials fetched',
                'data': serializer.data
             },)
Run Code Online (Sandbox Code Playgroud)

但我不知道最好在内部使用哪个函数AddAPIView来获得上述响应

class AddAPIView(generics.CreateAPIView):
    queryset = Masjid.objects.all()
    serializer_class = serializers.MasjidAddSerialzer
    permission_classes = [IsAuthenticated]
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

类型错误:类型过滤器的对象不可 JSON 序列化 - 嵌套对象

import csv
import json 

def csv_to_json(csvFilePath):
    jsonArray = []
    
    decoded_file = csvFilePath.read().decode('utf-8').splitlines()
   
    #load csv file data using csv library's dictionary reader
    csvReader = csv.DictReader(decoded_file) 
    #convert each csv row into python dict
    for row in csvReader: 
        #add this python dict to json array
        option = [row['option1'], row['option2'], row['option3'], row['option4']]
        option = filter(None, option)
        newJson = {
          'numb': row['numb'],
          'question': row['question'],
          'answer': row['answer'],
          'options': option
        }
        jsonArray.append(newJson)

    print('>>>>>>>jsonArray>>>>>>>', jsonArray)

    jsonString = json.dumps(jsonArray)

    print('>>>>>>>jsonString>>>>>>>', jsonString)

    return jsonArray
Run Code Online (Sandbox Code Playgroud)

错误

TypeError at /path/path
Object of …
Run Code Online (Sandbox Code Playgroud)

python json

2
推荐指数
1
解决办法
2095
查看次数

django模板中的for循环计数

我想按顺序显示Django模板中的计数。

就像 for 循环迭代 5 次一样,它应该在 Django 模板中打印0,1,2,3,4

users包含我从views.py传递的字符串

{% for user in users %}
    <tr>
        <td>
            FOR LOOP ITERATE COUNT
        </td>
        <td>
            {{ user.first_name }}
        </td>
    </tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

python django django-templates django-models django-views

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

Django - 注销重定向到登录页面

我试图在注销后重定向到登录页面,但出现了一些问题。

urls.py
Run Code Online (Sandbox Code Playgroud)

这是我的实际注销路线,它对我有用,但它不会将我重定向到登录页面

path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
Run Code Online (Sandbox Code Playgroud)

更改 logout.html -> login.html

它会破坏会话并注销用户,但问题是当我单击注销时,它会重定向到登录页面,但未显示登录输入字段

 path('logout/', auth_views.LogoutView.as_view(template_name='users/login.html'), name='logout'),
Run Code Online (Sandbox Code Playgroud)

如果我使用下面的路径(路线)。它不会破坏会话或注销

path('login/', auth_views.LogoutView.as_view(template_name='users/login.html'), name='logout'),
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-forms django-views

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

Django Rest Framework 中的成功消息

我要发送成功message status result_count。返回响应时。类似于下面的 JSON 响应

{
"status":true,
"result_count":5,
"message":"Timesheet Retrieved Successfully.",
"result": [
{
    "user_id": "40",
    "user_name": "Derek Hedrick",
    "data": [
    {
        "timesheet_id": "2",
        "job_id": "11",
        "job_code": "rfyxlv",
        "clock_in": "2018-09-07T03:00",
        "clock_out": "2018-09-07T15:00"
        "note": "This is test note",
        "type":
        {
             "regular":"7",
             "overtime":"2"
         }
    },
Run Code Online (Sandbox Code Playgroud)

但我得到这样的回应

[
    {
        "id": 1,
        "job_group": 1,
        "job_name": "RAJJUUU",
        "job_number": "hjhasfd",
        "job_description": "Json",
        "job_start_date": "2018-03-29",
        "job_start_time": "14:20:00",
        "job_end_date": "2018-03-29",
        "job_end_time": "14:20:00",
        "job_status": "Active",
        "job_created_on": "2019-01-28T08:32:47.327096Z"
    }
]
Run Code Online (Sandbox Code Playgroud)

我如何添加自定义消息。这是我的ListAPIView

class JobsListAPIView(generics.ListAPIView):
    serializer_class = JobListSerialzer
    # …
Run Code Online (Sandbox Code Playgroud)

django django-models django-views django-rest-framework

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