小编Jin*_*ama的帖子

同时在不同端口号运行2个django项目

正如标题所说,是否可以同时运行2个django项目?因为默认情况下,所有 django 都通过http://127.0.0.1:8000/运行。无论如何,我可以更改 django 项目的端口号吗?

我的任务是这样的:集成 django 1 api 和 django 2 api,在同一服务器/PC上设置两个 django 应用程序,具有不同的端口

据我所知,我可以更改 settings.py 数据库部分中的端口号。我似乎也找不到很多关于此的信息。

我找到的唯一解决方案是运行此命令:

manage.py runserver 8005
Run Code Online (Sandbox Code Playgroud)

将允许 django 项目在 8005 端口运行。

但是是否可以不编写命令而只在 settings.py 或其他文件中执行此操作?据我所知,这只是为了开发短语。如果是生产版的话,就不能这样使用。

django

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

Django 用户模型用户名(unique=False)

我看过很多解决方案,但似乎没有一个能回答问题。

我的用户模型现在正在使用 AbstractUser。有没有办法让用户名(unique = False)

因为我想让用户能够重复使用相同的用户名,因为我使用的登录是通过电子邮件地址和密码

下面是我尝试过但不起作用的代码。

代码:

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)
Run Code Online (Sandbox Code Playgroud)

错误:

customuser.MyUser: (auth.E003) 'MyUser.username' must be unique because it is named as the 'USERNAME_FI ELD'

python django

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

Django休息框架时间字段输入格式

经过数小时的搜索,我发现了许多相关但无法提供帮助的帖子。

我想要做的是输入例如:10:30 AM 到 TimeField。
在浏览器上的 django rest 框架 API 中,它使用这种上午 10:30 格式 ( '%I:%M %p')。
但是当我使用邮递员来测试它时,输出是 24 小时格式('%H:%M:%S')。我也尝试使用 10:30 PM 作为输入,但我得到的输出是 10:30:00 而不是 22:30:00。

我发现的许多答案都建议settings.py使用以下行更改 TimeField 格式:

TIME_INPUT_FORMATS = ('%I:%M %p',)
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用。

很抱歉我在 django rest 框架方面缺乏经验,因为我还在学习。

这是结果的屏幕截图。在浏览器 API 上:

在浏览器 API 上

关于邮递员:

关于邮递员

python django timefield django-rest-framework

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

Django使用djoser进行电子邮件身份验证登录

所以我最近尝试使用djoser,我想使用电子邮件而不是用户名来登录.

Djoser:http://djoser.readthedocs.io/en/latest/index.html

然后我尝试自定义令牌创建/登录以在serializers.py中从用户名更改为电子邮件

原版的

class TokenCreateSerializer(serializers.Serializer):
password = serializers.CharField(
    required=False, style={'input_type': 'password'}
    )

    default_error_messages = {
        'invalid_credentials': constants.INVALID_CREDENTIALS_ERROR,
        'inactive_account': constants.INACTIVE_ACCOUNT_ERROR,
    }

    def __init__(self, *args, **kwargs):
        super(TokenCreateSerializer, self).__init__(*args, **kwargs)
    self.user = None
    self.fields[User.USERNAME_FIELD] = serializers.CharField(
        required=False
    )

def validate(self, attrs):
    self.user = authenticate(
        username=attrs.get(User.USERNAME_FIELD),
        password=attrs.get('password')
        )

        self._validate_user_exists(self.user)
        self._validate_user_is_active(self.user)
        return attrs

    def _validate_user_exists(self, user):
        if not user:
            self.fail('invalid_credentials')

    def _validate_user_is_active(self, user):
        if not user.is_active:
            self.fail('inactive_account')
Run Code Online (Sandbox Code Playgroud)

编辑

class TokenCreateSerializer(serializers.Serializer):
password = serializers.CharField(
    required=False, style={'input_type': 'password'}
    )

    default_error_messages = {
        'invalid_credentials': …
Run Code Online (Sandbox Code Playgroud)

authentication django login django-rest-framework

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

Django休息框架自定义返回响应

所以我有这个自定义寄存器api注册用户,但是当用户成功注册时,我希望它有这条消息"你已经成功注册了一个帐户!" 但我尝试了不同的方法,但得到一个错误.

serializer.py

class UserCreate2Serializer(ModelSerializer):
    email = EmailField(label='Email Address')
    valid_time_formats = ['%H:%M', '%I:%M%p', '%I:%M %p']
    birthTime = serializers.TimeField(format='%I:%M %p', input_formats=valid_time_formats, allow_null=True, required=False)

    class Meta:
        model = MyUser
        fields = ['username', 'password', 'email', 'first_name', 'last_name', 'gender', 'nric', 'birthday', 'birthTime']
        extra_kwargs = {"password": {"write_only": True}}

    def validate(self, data):  # to validate if the user have been used
        email = data['email']
        user_queryset = MyUser.objects.filter(email=email)
        if user_queryset.exists():
            raise ValidationError("This user has already registered.")
        return data

    def create(self, validated_data):
        username = validated_data['username']
        password = validated_data['password'] …
Run Code Online (Sandbox Code Playgroud)

django response django-rest-framework

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

Django'WSGIRequest'对象没有属性'data'

我正在尝试对API发布请求,并将结果保存到我的数据库表之一.

这是我的代码.

这是我的模特.patientId是MyUser表的userId的外键

class MyUser(AbstractUser):
    userId = models.AutoField(primary_key=True)
    gender = models.CharField(max_length=6, blank=True, null=True)
    nric = models.CharField(max_length=9, blank=True, null=True)
    birthday = models.DateField(blank=True, null=True)
    birthTime = models.TimeField(blank=True, null=True)

class BookAppt(models.Model):
    clinicId = models.CharField(max_length=20)
    patientId = models.ForeignKey(MyUser, on_delete=models.CASCADE)
    scheduleTime = models.DateTimeField(blank=True, null=True)
    ticketNo = models.CharField(max_length=5)
    status = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)

view.py.api url来自另一个django项目

@csrf_exempt
def my_django_view(request):

    if request.method == 'POST':
        r = requests.post('http://127.0.0.1:8000/api/makeapp/', data=request.POST)
    else:
        r = requests.get('http://127.0.0.1:8000/api/makeapp/', data=request.GET)

    if r.status_code == 201 and request.method == 'POST':
        data = r.json()
        print(data)
        patient = request.data['patientId']
        patientId = …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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